mirror of
https://github.com/hmalik144/Driver.git
synced 2026-03-18 15:36:03 +00:00
Circleci project setup (#7)
This commit is contained in:
37
app/src/driver/AndroidManifest.xml
Normal file
37
app/src/driver/AndroidManifest.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<application android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round">
|
||||
<activity
|
||||
android:name="h_mal.appttude.com.ui.user.LoginActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.NoActionBar.User"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name="h_mal.appttude.com.ui.MainActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<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"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths" />
|
||||
</provider>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,28 @@
|
||||
package h_mal.appttude.com.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import h_mal.appttude.com.viewmodels.DriverLicenseViewModel
|
||||
|
||||
import kotlinx.android.synthetic.main.fragment_driver_overall.*
|
||||
|
||||
class DriverOverallFragment : Fragment(R.layout.fragment_driver_overall) {
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
61
app/src/driver/java/h_mal/appttude/com/ui/HomeFragment.kt
Normal file
61
app/src/driver/java/h_mal/appttude/com/ui/HomeFragment.kt
Normal file
@@ -0,0 +1,61 @@
|
||||
package h_mal.appttude.com.ui
|
||||
|
||||
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.data.DRIVER
|
||||
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.*
|
||||
import kotlinx.android.synthetic.main.home_buttons_container.driver
|
||||
|
||||
|
||||
class HomeFragment : DataSubmissionBaseFragment<RoleViewModel, String>(R.layout.fragment_home_driver) {
|
||||
|
||||
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()
|
||||
}
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
if (data == DRIVER){
|
||||
loadDriver()
|
||||
return
|
||||
}
|
||||
loadNonDriver()
|
||||
}
|
||||
|
||||
private fun loadNonDriver(){
|
||||
home_buttons_container.hide()
|
||||
profile_request_container.show()
|
||||
|
||||
request_driver_button.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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
101
app/src/driver/java/h_mal/appttude/com/ui/MainActivity.kt
Normal file
101
app/src/driver/java/h_mal/appttude/com/ui/MainActivity.kt
Normal file
@@ -0,0 +1,101 @@
|
||||
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
|
||||
import androidx.navigation.ui.AppBarConfiguration
|
||||
import androidx.navigation.ui.navigateUp
|
||||
import androidx.navigation.ui.setupActionBarWithNavController
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
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.dialogs.ExitDialog.displayExitDialog
|
||||
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>(),
|
||||
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)
|
||||
supportActionBar?.setDisplayShowTitleEnabled(false)
|
||||
navController = findNavController(R.id.container)
|
||||
|
||||
appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout)
|
||||
nav_view.setupWithNavController(navController)
|
||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||
|
||||
getViewModel().getUserDetails()
|
||||
setupLogoutInDrawer()
|
||||
}
|
||||
|
||||
override fun onSupportNavigateUp(): Boolean {
|
||||
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
|
||||
}
|
||||
|
||||
override fun setTitle(title: CharSequence) {
|
||||
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()
|
||||
}
|
||||
displayExitDialog()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onSuccess(data: Any?) {
|
||||
super.onSuccess(data)
|
||||
when(data){
|
||||
is FirebaseUser -> {
|
||||
setupDrawer(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
private fun setupLogoutInDrawer(){
|
||||
logout.setOnClickListener {
|
||||
getViewModel().logOut()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onNavigationItemSelected(item: MenuItem): Boolean {
|
||||
// Handle navigation view item clicks here.
|
||||
when (item.itemId) {
|
||||
R.id.nav_user_settings -> { }
|
||||
}
|
||||
drawer_layout.closeDrawer(GravityCompat.START)
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package h_mal.appttude.com.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.Fragment
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.BaseFragment
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import h_mal.appttude.com.viewmodels.DriverLicenseViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_vehicle_overall.*
|
||||
|
||||
|
||||
class VehicleOverallFragment : Fragment(R.layout.fragment_vehicle_overall) {
|
||||
|
||||
|
||||
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) }
|
||||
}
|
||||
}
|
||||
20
app/src/driver/java/h_mal/appttude/com/ui/WelcomeFragment.kt
Normal file
20
app/src/driver/java/h_mal/appttude/com/ui/WelcomeFragment.kt
Normal file
@@ -0,0 +1,20 @@
|
||||
package h_mal.appttude.com.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.utils.navigateTo
|
||||
import kotlinx.android.synthetic.driver.fragment_welcome.*
|
||||
|
||||
|
||||
class WelcomeFragment : Fragment(R.layout.fragment_welcome) {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
email_sign_in_button.setOnClickListener {
|
||||
view.navigateTo(R.id.to_driverOverallFragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
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.dialogs.DateDialog
|
||||
import h_mal.appttude.com.model.DriversLicenseObject
|
||||
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) {
|
||||
|
||||
private val viewmodel: DriverLicenseViewModel by getFragmentViewModel()
|
||||
override fun getViewModel(): DriverLicenseViewModel = viewmodel
|
||||
override var model = DriversLicenseObject()
|
||||
|
||||
private var imageUri: Uri? = null
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
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) {
|
||||
super.setFields(data)
|
||||
driversli_img.setGlideImage(data.licenseImageString)
|
||||
lic_no.setText(data.licenseNumber)
|
||||
lic_expiry.setText(data.licenseExpiry)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
this.imageUri = imageUri
|
||||
driversli_img.setGlideImage(imageUri)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package h_mal.appttude.com.ui.driverprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.dialogs.DateDialog
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.model.DriverProfileObject
|
||||
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) {
|
||||
|
||||
var localUri: Uri? = null
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
ni_number.setTextOnChange{ model.ni = it }
|
||||
date_first.apply {
|
||||
setTextOnChange{ model.dateFirst = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this){ date ->
|
||||
model.dateFirst = date
|
||||
}
|
||||
}
|
||||
}
|
||||
add_photo.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit_driver.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 setFields(data: DriverProfileObject) {
|
||||
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)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
localUri = imageUri
|
||||
driver_pic.setGlideImage(imageUri)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +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.dialogs.DateDialog
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.model.PrivateHireObject
|
||||
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) {
|
||||
|
||||
val viewmodel by getFragmentViewModel<PrivateHireLicenseViewModel>()
|
||||
override fun getViewModel(): PrivateHireLicenseViewModel = viewmodel
|
||||
override var model = PrivateHireObject()
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
ph_no.setTextOnChange{ model.phNumber = it }
|
||||
ph_expiry.apply {
|
||||
setTextOnChange{ model.phExpiry = it }
|
||||
setOnClickListener {
|
||||
DateDialog(this){ date ->
|
||||
model.phExpiry = date
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uploadphlic.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit.setOnClickListener{ submit() }
|
||||
}
|
||||
|
||||
override fun submit(){
|
||||
validateEditTexts(ph_no,ph_expiry).takeIf { !it }?.let { return }
|
||||
|
||||
viewmodel.setDataInDatabase(model, picUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: PrivateHireObject) {
|
||||
super.setFields(data)
|
||||
imageView2.setGlideImage(data.phImageString)
|
||||
ph_no.setText(data.phNumber)
|
||||
ph_expiry.setText(data.phExpiry)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
imageView2.setGlideImage(imageUri)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package h_mal.appttude.com.ui.vehicleprofile
|
||||
|
||||
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.dialogs.DateDialog
|
||||
import h_mal.appttude.com.model.InsuranceObject
|
||||
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) {
|
||||
|
||||
private var selectedImages: List<Uri>? = listOf()
|
||||
|
||||
private val viewmodel: InsuranceViewModel by getFragmentViewModel()
|
||||
override fun getViewModel(): InsuranceViewModel = viewmodel
|
||||
override var model = InsuranceObject()
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
is String -> imageView.setGlideImage(list[i] as String)
|
||||
}
|
||||
}
|
||||
carouselView.pageCount = list.size
|
||||
|
||||
}
|
||||
|
||||
override fun submit() {
|
||||
super.submit()
|
||||
validateEditTexts(insurer, insurance_exp).takeIf { !it }?.let { return }
|
||||
viewmodel.setDataInDatabase(model, selectedImages)
|
||||
}
|
||||
|
||||
override fun setFields(data: InsuranceObject) {
|
||||
super.setFields(data)
|
||||
|
||||
insurer.setText(model.insurerName)
|
||||
insurance_exp.setText(model.expiryDate)
|
||||
model.photoStrings?.let { updateImageCarousal(it) }
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUris: List<Uri>?) {
|
||||
selectedImages = imageUris
|
||||
selectedImages?.let { updateImageCarousal(it) }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package h_mal.appttude.com.ui.vehicleprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import h_mal.appttude.com.model.LogbookObject
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseFragment
|
||||
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) {
|
||||
|
||||
private val viewmodel by getFragmentViewModel<LogbookViewModel>()
|
||||
override fun getViewModel(): LogbookViewModel = viewmodel
|
||||
override var model = LogbookObject()
|
||||
|
||||
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 submit() {
|
||||
super.submit()
|
||||
validateEditTexts(v5c_no)
|
||||
.takeIf { !it }
|
||||
?.let { return }
|
||||
|
||||
viewmodel.setDataInDatabase(model, picUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: LogbookObject) {
|
||||
super.setFields(data)
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package h_mal.appttude.com.ui.vehicleprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
|
||||
import h_mal.appttude.com.dialogs.DateDialog
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.model.MotObject
|
||||
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){
|
||||
|
||||
private val viewmodel by getFragmentViewModel<MotViewModel>()
|
||||
override fun getViewModel(): MotViewModel = viewmodel
|
||||
override var model = MotObject()
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
mot_expiry.apply {
|
||||
setOnClickListener {
|
||||
DateDialog(this){ date ->
|
||||
model.motExpiry = date
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uploadmot.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit_mot.setOnClickListener { submit() }
|
||||
}
|
||||
|
||||
override fun submit() {
|
||||
super.submit()
|
||||
validateEditTexts(mot_expiry).takeIf { !it }?.let { return }
|
||||
viewmodel.setDataInDatabase(model, picUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: MotObject) {
|
||||
super.setFields(data)
|
||||
mot_img.setGlideImage(data.motImageString)
|
||||
mot_expiry.setText(data.motExpiry)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
mot_img.setGlideImage(imageUri)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package h_mal.appttude.com.ui.vehicleprofile
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
|
||||
import h_mal.appttude.com.dialogs.DateDialog
|
||||
import h_mal.appttude.com.model.PrivateHireVehicleObject
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseFragment
|
||||
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){
|
||||
|
||||
private val viewmodel by getFragmentViewModel<PrivateHireVehicleViewModel>()
|
||||
override fun getViewModel(): PrivateHireVehicleViewModel = viewmodel
|
||||
override var model = PrivateHireVehicleObject()
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
ph_no.setTextOnChange{ model.phCarNumber = it }
|
||||
ph_expiry.apply {
|
||||
setOnClickListener {
|
||||
DateDialog(this){ date ->
|
||||
model.phCarExpiry = date
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uploadphlic.setOnClickListener { openGalleryWithPermissionRequest() }
|
||||
submit.setOnClickListener { submit() }
|
||||
}
|
||||
|
||||
override fun submit() {
|
||||
super.submit()
|
||||
validateEditTexts(ph_no, ph_expiry).takeIf { !it }?.let { return }
|
||||
viewmodel.setDataInDatabase(model, picUri)
|
||||
}
|
||||
|
||||
override fun setFields(data: PrivateHireVehicleObject) {
|
||||
super.setFields(data)
|
||||
imageView2.setGlideImage(data.phCarImageString)
|
||||
ph_no.setText(data.phCarNumber)
|
||||
ph_expiry.setText(data.phCarExpiry)
|
||||
}
|
||||
|
||||
override fun onImageGalleryResult(imageUri: Uri?) {
|
||||
super.onImageGalleryResult(imageUri)
|
||||
imageView2.setGlideImage(imageUri)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package h_mal.appttude.com.ui.vehicleprofile
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
|
||||
import h_mal.appttude.com.dialogs.DateDialog
|
||||
import h_mal.appttude.com.R
|
||||
import h_mal.appttude.com.base.DataSubmissionBaseFragment
|
||||
import h_mal.appttude.com.model.VehicleProfileObject
|
||||
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){
|
||||
|
||||
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)
|
||||
|
||||
reg.setTextOnChange { model.reg = it }
|
||||
make.setTextOnChange { model.make = it }
|
||||
car_model.setTextOnChange { model.model = it }
|
||||
colour.setTextOnChange { model.colour = it }
|
||||
keeper_name.setTextOnChange { model.keeperName = it }
|
||||
address.setTextOnChange { model.keeperAddress = it }
|
||||
postcode.setTextOnChange { model.keeperPostCode = it }
|
||||
start_date.apply {
|
||||
setOnClickListener {
|
||||
DateDialog(this){ date ->
|
||||
model.startDate = date
|
||||
}
|
||||
}
|
||||
}
|
||||
seized_checkbox.setOnCheckedChangeListener { _, res -> model.isSeized = res}
|
||||
|
||||
submit_vehicle.setOnClickListener { submit() }
|
||||
}
|
||||
|
||||
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) {
|
||||
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
|
||||
}
|
||||
}
|
||||
74
app/src/driver/res/layout/fragment_welcome.xml
Normal file
74
app/src/driver/res/layout/fragment_welcome.xml
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/background_with_curve"
|
||||
tools:context=".ui.user.LoginFragment">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/background_img"
|
||||
android:src="@drawable/welcome_background"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
style="@style/imageBackground"
|
||||
android:contentDescription="@string/image_description" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/activity_horizontal_margin"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/email_sign_in_button"
|
||||
style="@style/TextButton.WithIcon"
|
||||
android:text="@string/login"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.9" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/register_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/or_create_my_account"
|
||||
android:textColor="@android:color/white"
|
||||
android:layout_marginTop="@dimen/activity_horizontal_margin"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/email_sign_in_button" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/hello_nice_to_meet_you"
|
||||
android:textColor="@android:color/white"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
android:layout_marginTop="32dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/get_a_new_experience"
|
||||
android:layout_marginTop="6dp"
|
||||
android:textStyle="bold"
|
||||
android:textSize="24sp"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
android:textColor="@android:color/white"
|
||||
app:layout_constraintTop_toBottomOf="@id/textView3"/>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
4
app/src/driver/res/values/strings.xml
Normal file
4
app/src/driver/res/values/strings.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<resources>
|
||||
<!-- TODO: Remove or change this placeholder text -->
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user