710 lines
106 KiB
Diff
710 lines
106 KiB
Diff
Index: app/src/main/res/values-hi/strings.xml
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+><resources>\r\n <string name=\"app_name\">HPOS रजिस्ट्रेशन</string>\r\n <!-- TODO: Remove or change this placeholder text -->\r\n <string name=\"hello_blank_fragment\">नमस्ते खाली फ़्रेग्मेंट</string>\r\n\r\n <!-- त्रुटि संदेश -->\r\n <string name=\"retry\">पुनः प्रयास करें</string>\r\n <string name=\"failed_to_connect\">कनेक्ट करने में विफल</string>\r\n <string name=\"cancel\">रद्द करें</string>\r\n\r\n <!-- पंजीकरण स्क्रीनें -->\r\n <string name=\"scan_person_abha_id_card\">व्यक्ति का ABHA ID/Aadhar ID कार्ड स्कैन करें</string>\r\n <string name=\"scan_now\">अब स्कैन करें</string>\r\n <string name=\"or\">या</string>\r\n <string name=\"enter_abha_number_manualy\">ABHA और Aadhar नंबर दर्ज करें</string>\r\n <string name=\"abha_id\">ABHA नंबर</string>\r\n <string name=\"create_abha_id_card\">ABHA ID कार्ड बनाएं</string>\r\n <string name=\"click_here\">यहां क्लिक करें</string>\r\n <string name=\"scan_person_s_aadhaar_card\">व्यक्ति का Aadhaar कार्ड स्कैन करें</string>\r\n <string name=\"proceed\">आगे बढ़ें</string>\r\n <string name=\"enter_aadhaar_number_manualy\">Aadhaar नंबर मैन्युअली दर्ज करें</string>\r\n <string name=\"aadhaar_number\">Aadhaar नंबर</string>\r\n <string name=\"enter_person_s_details\">व्यक्ति का विवरण दर्ज करें</string>\r\n <string name=\"person_s_name\">व्यक्ति का नाम</string>\r\n <string name=\"age\">आयु (वर्षों में)</string>\r\n <string name=\"gender\">लिंग चयन करें</string>\r\n <string name=\"name_error\">नाम खाली नहीं हो सकता</string>\r\n <string name=\"age_error\">आयु खाली नहीं हो सकती</string>\r\n <string name=\"gender_error\">लिंग खाली नहीं हो सकता</string>\r\n <string name=\"age_error_out_of_bound\">आयु मान्य होनी चाहिए</string>\r\n <string name=\"birth_year\">जन्म साल</string>\r\n <string name=\"marital_status\">वैवाहिक स्थिति चयन करें</string>\r\n <string name=\"father_s_husband_s_name\">पिता/पति का नाम</string>\r\n <string name=\"caste\">जाति</string>\r\n <string name=\"person_s_address_details\">व्यक्ति का पता विवरण</string>\r\n <string name=\"district\">जिला</string>\r\n <string name=\"city_town\">शहर / गाँव</string>\r\n <string name=\"state\">राज्य</string>\r\n <string name=\"pincode\">पिनकोड</string>\r\n <string name=\"patient_medical_records\">रोगी का चिकित्सा रेकॉर्ड</string>\r\n <string name=\"review\">समीक्षा</string>\r\n <string name=\"blood_group\">रक्त समूह चयन करें</string>\r\n <string name=\"house\">घर</string>\r\n <string name=\"is_patient_under_any_medication\">क्या आप पिछले तीन महीनों से सिक्ल सेल के लिए दवा ले रहे हैं?</string>\r\n <string name=\"is_patient_undergoing_any_blood_transfusion\">क्या आपने पिछले तीन महीनों में कोई रक्त प्रवाहन किया है?</string>\r\n\r\n <string name=\"user_list\">उपयोगकर्ता सूची</string>\r\n <string name=\"register_user\">उपयोगकर्ता पंजीकृत करें</string>\r\n <string name=\"is_user_having_any_family_history_for_sickle_cell\">क्या उपयोगकर्ता के पास सिक्ल सेल के लिए कोई परिवार का इतिहास है?</string>\r\n <string name=\"family_history_of_sickle_cell\">सिक्ल सेल का परिवारिक इतिहास</string>\r\n <string name=\"mobile_number_10_digits\">मोबाइल नंबर (10 अंक)</string>\r\n <string name=\"sub_caste\">उपजाति</string>\r\n <string name=\"capture_user_image\">उपयोगकर्ता की छवि कैद करें</string>\r\n <string name=\"mobile_number\">मोबाइल नंबर</string>\r\n <string name=\"edit\">संपादित करें</string>\r\n <string name=\"user_details\">उपयोगकर्ता विवरण</string>\r\n <string name=\"internet_is_not_available_and_there_is_no_data_available_in_local_db\">इंटरनेट उपलब्ध नहीं है और स्थानीय डेटाबेस में कोई डेटा उपलब्ध नहीं है</string>\r\n <string name=\"user_id\">उपयोगकर्ता आईडी: %1$s</string>\r\n <string name=\"abha_number\">ABHA नंबर: %1$s</string>\r\n <string name=\"aadhar_number_details\">Aadhar नंबर: %1$s</string>\r\n <string name=\"user_name\">व्यक्ति का नाम: %1$s</string>\r\n <string name=\"birth_year_details\">जन्म साल: %1$s</string>\r\n <string name=\"gender_details\">लिंग: %1$s</string>\r\n <string name=\"phone_number_details\">मोबाइल नंबर: %1$s</string>\r\n <string name=\"care_of_details\">पिता/पति का नाम: %1$s</string>\r\n <string name=\"marital_status_details\">वैवाहिक स्थिति: %1$s</string>\r\n <string name=\"category_details\">श्रेणी: %1$s</string>\r\n <string name=\"caste_details\">जाति: %1$s</string>\r\n <string name=\"sub_caste_details\">उपजाति: %1$s</string>\r\n <string name=\"house_details\">घर: %1$s</string>\r\n <string name=\"city_town_details\">शहर/गाँव: %1$s</string>\r\n <string name=\"district_details\">जिला: %1$s</string>\r\n <string name=\"state_details\">राज्य: %1$s</string>\r\n <string name=\"centre_name\">केंद्र का नाम: %1$s</string>\r\n\r\n <string name=\"pincode_details\">पिनकोड: %1$s</string>\r\n <string name=\"is_patient_under_any_medication_details\">क्या दवा ले रहे हैं: %1$s</string>\r\n <string name=\"is_patient_undergoing_any_blood_transfusion_details\">क्या रक्त प्रवाहन हो रहा है: %1$s</string>\r\n <string name=\"is_any_sickle\">क्या कोई सिक्ल सेल इतिहास है: %1$s</string>\r\n <string name=\"sickle_cell_family_history\">सिक्ल सेल परिवारिक इतिहास: %1$s</string>\r\n <string name=\"center_name\">केंद्र का नाम</string>\r\n <string name=\"login_id\">लॉगिन आईडी</string>\r\n <string name=\"password\">पासवर्ड</string>\r\n <string name=\"login\">लॉगिन</string>\r\n <string name=\"_2\">श्रेणी</string>\r\n <string name=\"category\">श्रेणी</string>\r\n <string name=\"male\">पुरुष</string>\r\n <string name=\"female\">महिला</string>\r\n <string name=\"other\">अन्य</string>\r\n <string name=\"cancelled_unable_scan\">रद्द किया गया: स्कैन करने में असमर्थ, पुनः प्रयास करें!!</string>\r\n <string name=\"scan_abha_card\">कृपया एबीए आईडी / आधार आईडी स्कैन करें</string>\r\n <string name=\"invalid_qr_code\">आपने स्कैन किया हुआ QR कोड अमान्य है, कृपया डेटा मैन्युअली दर्ज करें</string>\r\n <string name=\"enter_aadhar_manually\">आपने एबीए आईडी स्कैन किया है, आधार आईडी को मैन्युअली दर्ज करने की आवश्यकता है</string>\r\n <string name=\"invalid_abha_id\">अमान्य एबीए आईडी</string>\r\n <string name=\"invalid_aadhar_id\">अमान्य आधार आईडी</string>\r\n <string name=\"name_field_error\">नाम फील्ड खाली नहीं हो सकती या 3 अक्षरों से कम होनी चाहिए</string>\r\n <string name=\"center_name_error\">केंद्र का नाम खाली नहीं हो सकता या 3 अक्षरों से कम होना चाहिए</string>\r\n <string name=\"registration_success\">पंजीकरण सफलतापूर्वक हुआ</string>\r\n <string name=\"internt_not_local\">इंटरनेट उपलब्ध नहीं है, परीक्षण विवरण स्थानीय रूप से संग्रहित किए गए हैं</string>\r\n <string name=\"enter_details_properly\">कृपया सभी विवरणों को ठीक से दर्ज करें</string>\r\n <string name=\"enter_valid_birth_year\">कृपया 1900 से 2023 के बीच एक मान्य जन्म वर्ष दर्ज करें</string>\r\n <string name=\"fill_field\">कृपया फ़ील्ड भरें</string>\r\n <string name=\"valid_mobile_number\">कृपया एक मान्य 10-अंकों का मोबाइल नंबर दर्ज करें</string>\r\n <string name=\"enter_name\">कृपया अपना नाम दर्ज करें</string>\r\n <string name=\"enter_marital_status\">कृपया अपनी वैवाहिक स्थिति दर्ज करें</string>\r\n <string name=\"enter_category\">कृपया अपनी श्रेणी दर्ज करें</string>\r\n <string name=\"enter_caste\">कृपया अपनी जाति दर्ज करें</string>\r\n <string name=\"enter_house_address\">कृपया अपना घर का पता दर्ज करें</string>\r\n <string name=\"enter_city\">कृपया अपने शहर को दर्ज करें</string>\r\n <string name=\"enter_district\">कृपया अपने जिले को दर्ज करें</string>\r\n <string name=\"enter_state\">कृपया अपने राज्य को दर्ज करें</string>\r\n <string name=\"enter_pincode\">कृपया एक मान्य 6-अंकों कोड दर्ज करें</string>\r\n <string name=\"enter_family_history\">कृपया अपना परिवार का इतिहास दर्ज करें</string>\r\n <string name=\"enter_guardian_name\">कृपया अपने पालक का नाम दर्ज करें</string>\r\n <string name=\"enter_father_husband_name\">पिता / पति का नाम दर्ज करें</string>\r\n <string name=\"do_log_out\">क्या आप ऐप्लिकेशन से लॉग आउट करना चाहते हैं?</string>\r\n <string name=\"log_out\">लॉग आउट</string>\r\n\r\n <string name=\"upload_db_registration\">डीबी पंजीकरण अपलोड करें</string>\r\n <string name=\"upload_local_db_to_cloud\">क्या आप स्थानीय डीबी को क्लाउड पर अपलोड करना चाहते हैं?</string>\r\n <string name=\"upload\">अपलोड</string>\r\n <string name=\"upload_done_successfully\">अपलोड सफलतापूर्वक हुआ</string>\r\n\r\n <string name=\"enter_proper_login_id\">कृपया सही लॉगिन आईडी दर्ज करें</string>\r\n <string name=\"enter_proper_password\">कृपया सही पासवर्ड दर्ज करें</string>\r\n <string name=\"wrong_password\">गलत पासवर्ड</string>\r\n <string name=\"wrong_user_id\">गलत उपयोगकर्ता आईडी</string>\r\n <string name=\"scanned_aadhar_id\">आपने आधार आईडी स्कैन की है, कृपया आधार आईडी नंबर और अभा आईडी को मैन्युअली दर्ज करें</string>\r\n <string name=\"scanned_abha_id\">आपने आभा आईडी स्कैन की है</string>\r\n <string name=\"scanned_aadharid\">आपने आधार आईडी स्कैन की है</string>\r\n\r\n <string-array name=\"category\">\r\n <item>NT-A</item>\r\n <item>NT-B</item>\r\n <item>NT-C</item>\r\n <item>NT-D</item>\r\n <item>OBC</item>\r\n <item>OPEN</item>\r\n <item>OTHER</item>\r\n <item>SBC</item>\r\n <item>SC</item>\r\n <item>ST</item>\r\n </string-array>\r\n\r\n <string-array name=\"caste\">\r\n <item>अहीर</item>\r\n <item>बराई</item>\r\n <item>ब्राह्मण</item>\r\n <item>बौद्ध</item>\r\n <item>चांब़चार</item>\r\n <item>चामार</item>\r\n <item>देवांगन</item>\r\n <item>धीवर</item>\r\n <item>फुलमाली</item>\r\n <item>गोंड</item>\r\n <item>जैन</item>\r\n <item>कोली</item>\r\n <item>कोष्टी</item>\r\n <item>कुंभार</item>\r\n <item>कुंबी</item>\r\n <item>लोहार</item>\r\n <item>माळी</item>\r\n <item>माणा</item>\r\n <item>महार</item>\r\n <item>मौर्या</item>\r\n <item>मुसलमान</item>\r\n <item>नवी</item>\r\n <item>अन्य</item>\r\n <item>पवार</item>\r\n <item>परदेसी</item>\r\n <item>शाहू</item>\r\n <item>सोनार</item>\r\n <item>तेली</item>\r\n </string-array>\r\n\r\n\r\n <string-array name=\"marital_status\">\r\n <item>विवाहित</item>\r\n <item>एकत्र</item>\r\n <item>तलाकशुदा</item>\r\n </string-array>\r\n\r\n\r\n <string-array name=\"blood_group\">\r\n <item>O+ve</item>\r\n <item>O-ve</item>\r\n <item>A+ve</item>\r\n <item>A-ve</item>\r\n <item>B+ve</item>\r\n <item>B-ve</item>\r\n <item>AB+ve</item>\r\n <item>AB-ve</item>\r\n </string-array>\r\n\r\n <string-array name=\"gender\">\r\n <item>पुरुष</item>\r\n <item>महिला</item>\r\n <item>अन्य</item>\r\n </string-array>\r\n\r\n <string-array name=\"yes_no\">\r\n <item>हाँ</item>\r\n <item>नहीं</item>\r\n </string-array>\r\n\r\n</resources>
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
|
|
--- a/app/src/main/res/values-hi/strings.xml (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/res/values-hi/strings.xml (date 1701672623815)
|
|
@@ -128,7 +128,16 @@
|
|
<string name="scanned_aadhar_id">आपने आधार आईडी स्कैन की है, कृपया आधार आईडी नंबर और अभा आईडी को मैन्युअली दर्ज करें</string>
|
|
<string name="scanned_abha_id">आपने आभा आईडी स्कैन की है</string>
|
|
<string name="scanned_aadharid">आपने आधार आईडी स्कैन की है</string>
|
|
+ <string name="language_update">भाषा सफलतापूर्वक अपडेट की गई है</string>
|
|
+ <string name="select_language">अपनी पसंदीदा भाषा का चयन करें</string>
|
|
+ <string name="app_language">ऐप भाषा</string>
|
|
+ <string name="add_blood_group">रक्त समूह जोड़ें</string>
|
|
+ <string name="ok">ठीक है</string>
|
|
+ <string name="userid">उपयोगकर्ता आईडी</string>
|
|
|
|
+ <string name="yes">हाँ</string>
|
|
+ <string name="no">नहीं</string>
|
|
+ <string name="name">नाम</string>
|
|
<string-array name="category">
|
|
<item>NT-A</item>
|
|
<item>NT-B</item>
|
|
Index: app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+>package com.example.hposregistration.ui.fragments.registration\r\n\r\nimport android.os.Bundle\r\nimport android.view.LayoutInflater\r\nimport android.view.View\r\nimport android.view.ViewGroup\r\nimport android.widget.Toast\r\nimport androidx.core.view.isVisible\r\nimport androidx.fragment.app.Fragment\r\nimport androidx.fragment.app.viewModels\r\nimport androidx.navigation.fragment.findNavController\r\nimport androidx.navigation.fragment.navArgs\r\nimport com.example.hposregistration.data.user.UserData\r\nimport com.example.hposregistration.ui.viewmodels.RegistrationViewModel\r\nimport dagger.hilt.android.AndroidEntryPoint\r\nimport `in`.sminnovations.hposregistration.R\r\nimport `in`.sminnovations.hposregistration.databinding.FragmentUserDetailsRegistrationBinding\r\n\r\n\r\n@AndroidEntryPoint\r\nclass UserDetailsRegistrationFragment : Fragment() {\r\n\r\n private var _binding: FragmentUserDetailsRegistrationBinding? = null\r\n private val binding get() = _binding!!\r\n\r\n private val viewModel by viewModels<RegistrationViewModel>()\r\n\r\n private lateinit var userData: UserData\r\n\r\n private val args: UserDetailsRegistrationFragmentArgs by navArgs()\r\n\r\n override fun onCreateView(\r\n inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?\r\n ): View {\r\n _binding = FragmentUserDetailsRegistrationBinding.inflate(inflater, container, false)\r\n return binding.root\r\n }\r\n\r\n override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\r\n super.onViewCreated(view, savedInstanceState)\r\n init()\r\n }\r\n\r\n private fun init() {\r\n setupViewModel()\r\n setupSubmitButton()\r\n\r\n\r\n binding.etCategory.setOnItemClickListener { parent, view, position, id ->\r\n if (parent.getItemAtPosition(position).toString().equals(\"OTHER\", ignoreCase = true)) {\r\n binding.tilOther.visibility = View.VISIBLE\r\n } else {\r\n binding.tilOther.visibility = View.GONE\r\n }\r\n }\r\n\r\n binding.etCaste.setOnItemClickListener { parent, view, position, id ->\r\n if (parent.getItemAtPosition(position).toString().equals(\"OTHER\", ignoreCase = true)) {\r\n binding.tilOthercaste.visibility = View.VISIBLE\r\n } else {\r\n binding.tilOthercaste.visibility = View.GONE\r\n }\r\n }\r\n }\r\n\r\n private fun setupViewModel() {\r\n viewModel.getUserByID(args.userId)\r\n viewModel.userData.observe(viewLifecycleOwner) {\r\n userData = it\r\n autoFillUserData(userData)\r\n }\r\n }\r\n\r\n private fun autoFillUserData(user: UserData) {\r\n with(binding) {\r\n user.birthYear.let { etYob.setText(it) }\r\n user.gender.let {\r\n when (it) {\r\n \"Male\" -> {\r\n male.isChecked = true\r\n binding.tilOthergender.visibility = View.GONE\r\n }\r\n \"Female\" -> {\r\n female.isChecked = true\r\n binding.tilOthergender.visibility = View.GONE\r\n }\r\n else -> {\r\n other.isChecked = true\r\n binding.tilOthergender.visibility = View.VISIBLE\r\n }\r\n }\r\n }\r\n user.phoneNumber.let { etMobile.setText(it) }\r\n user.careOf.let { etCareof.setText(it) }\r\n user.maritalStatus.let { etIsMarried.setText(it, false) }\r\n user.subCaste.let { etSubCaste.setText(it) }\r\n user.house.let { etHouse.setText(it) }\r\n user.city.let { etCity.setText(it) }\r\n user.district.let { etDistrict.setText(it) }\r\n user.state.let { etState.setText(it) }\r\n user.pinCode.let { etPincode.setText(it) }\r\n user.isUnderMedication.let {\r\n if (it != null) {\r\n yes.isChecked = it\r\n }\r\n }\r\n user.isUnderTransfusion.let {\r\n if (it != null) {\r\n yes1.isChecked = it\r\n }\r\n }\r\n user.sickleCellHistory.let {\r\n if (it != null) {\r\n yes1history.isChecked = true\r\n }\r\n }\r\n user.category.let {\r\n etCategory.setText(it, false)\r\n }\r\n user.caste.let {\r\n etCaste.setText(it, false)\r\n }\r\n\r\n if (yes1history.isChecked) {\r\n if (binding.yes1history.isChecked) View.VISIBLE else View.GONE\r\n\r\n user.sickleCellHistory.let { etFamilyHistory.setText(it) }\r\n } else {\r\n binding.tilFamilyHistory.visibility = View.GONE\r\n }\r\n binding.yes1history.setOnClickListener {\r\n binding.tilFamilyHistory.visibility =\r\n if (binding.yes1history.isChecked) View.VISIBLE else View.GONE\r\n user.sickleCellHistory.let { etFamilyHistory.setText(it) }\r\n\r\n }\r\n binding.no1history.setOnClickListener {\r\n binding.tilFamilyHistory.visibility =\r\n if (binding.no1history.isChecked) View.GONE else View.VISIBLE\r\n }\r\n\r\n if(other.isChecked){\r\n user.gender.let { etOthergender.setText(it) }\r\n }\r\n\r\n binding.male.setOnClickListener {\r\n binding.tilOthergender.visibility = View.GONE\r\n }\r\n\r\n binding.female.setOnClickListener {\r\n binding.tilOthergender.visibility = View.GONE\r\n }\r\n\r\n binding.other.setOnClickListener {\r\n binding.tilOthergender.visibility = View.VISIBLE\r\n }\r\n\r\n if (binding.etCategory.text.toString().equals(\"OTHER\", ignoreCase = true)) {\r\n binding.tilOther.visibility = View.VISIBLE\r\n binding.etOther.visibility = View.VISIBLE\r\n } else {\r\n binding.tilOther.visibility = View.GONE\r\n }\r\n\r\n if (binding.etCaste.text.toString().equals(\"OTHER\", ignoreCase = true)) {\r\n binding.tilOthercaste.visibility = View.VISIBLE\r\n binding.etOthercaste.visibility = View.VISIBLE\r\n } else {\r\n binding.tilOthercaste.visibility = View.GONE\r\n }\r\n\r\n }\r\n }\r\n\r\n private fun setupSubmitButton() {\r\n binding.btnSubmit.setOnClickListener {\r\n if (verifyUserDetails()) {\r\n userData._id = args.userId\r\n viewModel.insert(userData)\r\n navigateToCaptureUserImageFragment()\r\n } else {\r\n showToast(R.string.enter_details_properly.toString())\r\n }\r\n }\r\n }\r\n\r\n private fun navigateToCaptureUserImageFragment() {\r\n val action = UserDetailsRegistrationFragmentDirections\r\n .actionUserDetailsRegistrationFragmentToCaptureUserImageFragment2(args.userId)\r\n findNavController().navigate(action)\r\n }\r\n\r\n private fun verifyUserDetails(): Boolean {\r\n with(binding) {\r\n val yob = etYob.text.toString()\r\n if (yob.isEmpty() || yob.toInt() <= 1900 || yob.toInt() > 2023) {\r\n etYob.error = R.string.enter_valid_birth_year.toString()\r\n return false\r\n } else {\r\n userData.birthYear = yob\r\n }\r\n\r\n if (male.isChecked) {\r\n binding.tilOthergender.visibility = View.GONE\r\n userData.gender = \"Male\"\r\n } else if (female.isChecked) {\r\n binding.tilOthergender.visibility = View.GONE\r\n userData.gender = \"Female\"\r\n } else if(other.isChecked) {\r\n binding.tilOthergender.visibility = View.VISIBLE\r\n val genderother= binding.etOthergender.text.toString()\r\n userData.gender = genderother\r\n if (genderother.isEmpty()) {\r\n etOthergender.error = R.string.fill_field.toString()\r\n return false\r\n }\r\n }\r\n\r\n val pInfo = requireActivity().packageManager.getPackageInfo(\r\n requireActivity().packageName, 0\r\n )\r\n val version = pInfo.versionName\r\n userData.appVersion = version\r\n\r\n\r\n val mobile = etMobile.text.toString()\r\n if (mobile.isEmpty() || mobile.length != 10) {\r\n etMobile.error = R.string.valid_mobile_number.toString()\r\n return false\r\n } else {\r\n userData.phoneNumber = mobile\r\n }\r\n\r\n val careOf = etCareof.text.toString()\r\n if (careOf.isEmpty()) {\r\n etCareof.error = R.string.enter_father_husband_name.toString()\r\n return false\r\n } else {\r\n userData.careOf = careOf\r\n }\r\n\r\n val maritalStatus = etIsMarried.text.toString()\r\n if (maritalStatus.isEmpty()) {\r\n etIsMarried.error = R.string.enter_marital_status.toString()\r\n return false\r\n } else {\r\n userData.maritalStatus = maritalStatus\r\n }\r\n\r\n val category = etCategory.text.toString()\r\n val other = etOther.text.toString()\r\n if (category.isEmpty()) {\r\n etCategory.error = R.string.enter_category.toString()\r\n return false\r\n } else if (category == \"OTHER\" && tilOther.isVisible) {\r\n userData.category = other\r\n } else {\r\n userData.category = category\r\n }\r\n\r\n val caste = etCaste.text.toString()\r\n val othercaste = etOthercaste.text.toString()\r\n if (caste.isEmpty()) {\r\n etCaste.error = R.string.enter_caste.toString()\r\n return false\r\n } else if (caste == \"OTHER\" && tilOthercaste.isVisible) {\r\n userData.caste = othercaste\r\n } else {\r\n userData.caste = caste\r\n }\r\n\r\n\r\n val subCaste = etSubCaste.text.toString()\r\n if (subCaste.isNotEmpty()) {\r\n userData.subCaste = subCaste\r\n }\r\n\r\n val house = etHouse.text.toString()\r\n if (house.isEmpty()) {\r\n etHouse.error = R.string.enter_house_address.toString()\r\n return false\r\n } else {\r\n userData.house = house\r\n }\r\n\r\n val city = etCity.text.toString()\r\n if (city.isEmpty()) {\r\n etCity.error = R.string.enter_city.toString()\r\n return false\r\n } else {\r\n userData.city = city\r\n }\r\n\r\n val district = etDistrict.text.toString()\r\n if (district.isEmpty()) {\r\n etDistrict.error = R.string.enter_district.toString()\r\n return false\r\n } else {\r\n userData.district = district\r\n }\r\n\r\n val state = etState.text.toString()\r\n if (state.isEmpty()) {\r\n etState.error = R.string.enter_state.toString()\r\n return false\r\n } else {\r\n userData.state = state\r\n }\r\n\r\n val pincode = etPincode.text.toString()\r\n if (pincode.isEmpty() || pincode.length != 6) {\r\n etPincode.error = R.string.enter_pincode.toString()\r\n return false\r\n } else {\r\n userData.pinCode = pincode\r\n }\r\n\r\n userData.isUnderMedication = yes.isChecked\r\n userData.isUnderTransfusion = yes1.isChecked\r\n userData.sickleCellHistory = yes1history.isChecked.toString()\r\n\r\n if (yes1history.isChecked) {\r\n val familyHistory = etFamilyHistory.text.toString()\r\n if (familyHistory.isEmpty()) {\r\n etFamilyHistory.error = R.string.enter_family_history.toString()\r\n return false\r\n }\r\n\r\n userData.sickleCellHistory = familyHistory\r\n } else {\r\n\r\n userData.sickleCellHistory = null\r\n\r\n }\r\n\r\n return true\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n private fun showToast(message: String) {\r\n Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()\r\n }\r\n\r\n override fun onDestroyView() {\r\n super.onDestroyView()\r\n _binding = null\r\n }\r\n}\r\n
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt
|
|
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt (date 1701445288005)
|
|
@@ -179,7 +179,7 @@
|
|
viewModel.insert(userData)
|
|
navigateToCaptureUserImageFragment()
|
|
} else {
|
|
- showToast(R.string.enter_details_properly.toString())
|
|
+ showToast(getString(R.string.enter_details_properly))
|
|
}
|
|
}
|
|
}
|
|
@@ -194,7 +194,7 @@
|
|
with(binding) {
|
|
val yob = etYob.text.toString()
|
|
if (yob.isEmpty() || yob.toInt() <= 1900 || yob.toInt() > 2023) {
|
|
- etYob.error = R.string.enter_valid_birth_year.toString()
|
|
+ etYob.error = getString(R.string.enter_valid_birth_year)
|
|
return false
|
|
} else {
|
|
userData.birthYear = yob
|
|
@@ -211,7 +211,7 @@
|
|
val genderother= binding.etOthergender.text.toString()
|
|
userData.gender = genderother
|
|
if (genderother.isEmpty()) {
|
|
- etOthergender.error = R.string.fill_field.toString()
|
|
+ etOthergender.error = getString(R.string.fill_field)
|
|
return false
|
|
}
|
|
}
|
|
@@ -225,7 +225,7 @@
|
|
|
|
val mobile = etMobile.text.toString()
|
|
if (mobile.isEmpty() || mobile.length != 10) {
|
|
- etMobile.error = R.string.valid_mobile_number.toString()
|
|
+ etMobile.error = getString(R.string.valid_mobile_number)
|
|
return false
|
|
} else {
|
|
userData.phoneNumber = mobile
|
|
@@ -233,7 +233,7 @@
|
|
|
|
val careOf = etCareof.text.toString()
|
|
if (careOf.isEmpty()) {
|
|
- etCareof.error = R.string.enter_father_husband_name.toString()
|
|
+ etCareof.error = getString(R.string.enter_father_husband_name)
|
|
return false
|
|
} else {
|
|
userData.careOf = careOf
|
|
@@ -241,7 +241,7 @@
|
|
|
|
val maritalStatus = etIsMarried.text.toString()
|
|
if (maritalStatus.isEmpty()) {
|
|
- etIsMarried.error = R.string.enter_marital_status.toString()
|
|
+ etIsMarried.error = getString(R.string.enter_marital_status)
|
|
return false
|
|
} else {
|
|
userData.maritalStatus = maritalStatus
|
|
@@ -250,7 +250,7 @@
|
|
val category = etCategory.text.toString()
|
|
val other = etOther.text.toString()
|
|
if (category.isEmpty()) {
|
|
- etCategory.error = R.string.enter_category.toString()
|
|
+ etCategory.error = getString(R.string.enter_category)
|
|
return false
|
|
} else if (category == "OTHER" && tilOther.isVisible) {
|
|
userData.category = other
|
|
@@ -261,7 +261,7 @@
|
|
val caste = etCaste.text.toString()
|
|
val othercaste = etOthercaste.text.toString()
|
|
if (caste.isEmpty()) {
|
|
- etCaste.error = R.string.enter_caste.toString()
|
|
+ etCaste.error = getString(R.string.enter_caste)
|
|
return false
|
|
} else if (caste == "OTHER" && tilOthercaste.isVisible) {
|
|
userData.caste = othercaste
|
|
@@ -277,7 +277,7 @@
|
|
|
|
val house = etHouse.text.toString()
|
|
if (house.isEmpty()) {
|
|
- etHouse.error = R.string.enter_house_address.toString()
|
|
+ etHouse.error = getString(R.string.enter_house_address)
|
|
return false
|
|
} else {
|
|
userData.house = house
|
|
@@ -285,7 +285,7 @@
|
|
|
|
val city = etCity.text.toString()
|
|
if (city.isEmpty()) {
|
|
- etCity.error = R.string.enter_city.toString()
|
|
+ etCity.error = getString(R.string.enter_city)
|
|
return false
|
|
} else {
|
|
userData.city = city
|
|
@@ -293,7 +293,7 @@
|
|
|
|
val district = etDistrict.text.toString()
|
|
if (district.isEmpty()) {
|
|
- etDistrict.error = R.string.enter_district.toString()
|
|
+ etDistrict.error = getString(R.string.enter_district)
|
|
return false
|
|
} else {
|
|
userData.district = district
|
|
@@ -301,7 +301,7 @@
|
|
|
|
val state = etState.text.toString()
|
|
if (state.isEmpty()) {
|
|
- etState.error = R.string.enter_state.toString()
|
|
+ etState.error = getString(R.string.enter_state)
|
|
return false
|
|
} else {
|
|
userData.state = state
|
|
@@ -309,7 +309,7 @@
|
|
|
|
val pincode = etPincode.text.toString()
|
|
if (pincode.isEmpty() || pincode.length != 6) {
|
|
- etPincode.error = R.string.enter_pincode.toString()
|
|
+ etPincode.error = getString(R.string.enter_pincode)
|
|
return false
|
|
} else {
|
|
userData.pinCode = pincode
|
|
@@ -322,7 +322,7 @@
|
|
if (yes1history.isChecked) {
|
|
val familyHistory = etFamilyHistory.text.toString()
|
|
if (familyHistory.isEmpty()) {
|
|
- etFamilyHistory.error = R.string.enter_family_history.toString()
|
|
+ etFamilyHistory.error = getString(R.string.enter_family_history)
|
|
return false
|
|
}
|
|
|
|
Index: app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+>package com.example.hposregistration.adapters\r\n\r\nimport android.annotation.SuppressLint\r\nimport android.view.LayoutInflater\r\nimport android.view.View\r\nimport android.view.ViewGroup\r\nimport androidx.recyclerview.widget.RecyclerView\r\nimport com.bumptech.glide.Glide\r\nimport com.example.hposregistration.data.user.UserData\r\nimport com.firebase.ui.firestore.FirestoreRecyclerAdapter\r\nimport com.firebase.ui.firestore.FirestoreRecyclerOptions\r\nimport `in`.sminnovations.hposregistration.databinding.UserItemViewBinding\r\n\r\nclass UserListOnlineAdapter(options: FirestoreRecyclerOptions<UserData>, private val view: View) :\r\n FirestoreRecyclerAdapter<UserData, UserListOnlineAdapter.OrderItemViewHolder>(options) {\r\n\r\n class OrderItemViewHolder(val binding: UserItemViewBinding) :\r\n RecyclerView.ViewHolder(binding.root)\r\n\r\n override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OrderItemViewHolder {\r\n return OrderItemViewHolder(\r\n UserItemViewBinding\r\n .inflate(LayoutInflater.from(parent.context), parent, false)\r\n )\r\n }\r\n\r\n @SuppressLint(\"SetTextI18n\")\r\n override fun onBindViewHolder(holder: OrderItemViewHolder, position: Int, model: UserData) {\r\n holder.binding.apply {\r\n userName.text = \"Name: ${model.name}\"\r\n userId.text = \"User ID: ${model._id}\"\r\n Glide.with(view).load(model.userImageURL).into(userImage)\r\n }\r\n }\r\n}
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt b/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt
|
|
--- a/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt (date 1701671985976)
|
|
@@ -9,6 +9,7 @@
|
|
import com.example.hposregistration.data.user.UserData
|
|
import com.firebase.ui.firestore.FirestoreRecyclerAdapter
|
|
import com.firebase.ui.firestore.FirestoreRecyclerOptions
|
|
+import `in`.sminnovations.hposregistration.R
|
|
import `in`.sminnovations.hposregistration.databinding.UserItemViewBinding
|
|
|
|
class UserListOnlineAdapter(options: FirestoreRecyclerOptions<UserData>, private val view: View) :
|
|
@@ -27,8 +28,8 @@
|
|
@SuppressLint("SetTextI18n")
|
|
override fun onBindViewHolder(holder: OrderItemViewHolder, position: Int, model: UserData) {
|
|
holder.binding.apply {
|
|
- userName.text = "Name: ${model.name}"
|
|
- userId.text = "User ID: ${model._id}"
|
|
+ userName.text = view.context.getString(R.string.name) + ": ${model.name}"
|
|
+ userId.text = view.context.getString(R.string.userid) + ": ${model._id}"
|
|
Glide.with(view).load(model.userImageURL).into(userImage)
|
|
}
|
|
}
|
|
Index: app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+>package com.example.hposregistration.ui.fragments\r\n\r\nimport android.app.AlertDialog\r\nimport android.content.Context\r\nimport android.content.DialogInterface\r\nimport android.content.SharedPreferences\r\nimport android.os.Bundle\r\nimport android.view.LayoutInflater\r\nimport android.view.View\r\nimport android.view.ViewGroup\r\nimport android.widget.Button\r\nimport android.widget.Toast\r\nimport androidx.fragment.app.viewModels\r\nimport androidx.navigation.fragment.findNavController\r\nimport com.example.hposregistration.adapters.UserListOfflineAdapter\r\nimport com.example.hposregistration.adapters.UserListOnlineAdapter\r\nimport com.example.hposregistration.data.Constant\r\nimport com.example.hposregistration.data.user.UserData\r\nimport com.example.hposregistration.ui.viewmodels.RegistrationViewModel\r\nimport com.firebase.ui.firestore.FirestoreRecyclerOptions\r\nimport com.google.firebase.firestore.ktx.firestore\r\nimport com.google.firebase.ktx.Firebase\r\nimport dagger.hilt.android.AndroidEntryPoint\r\nimport `in`.sminnovations.hposregistration.R\r\nimport `in`.sminnovations.hposregistration.databinding.FragmentUserListBinding\r\n\r\n@AndroidEntryPoint\r\nclass UserListFragment : BaseFragment() {\r\n\r\n private var _binding: FragmentUserListBinding? = null\r\n private val binding get() = _binding!!\r\n\r\n private val viewModel by viewModels<RegistrationViewModel>()\r\n\r\n private var isOnline = false\r\n\r\n private lateinit var sharedPreference: SharedPreferences\r\n\r\n override fun onCreateView(\r\n inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?\r\n ): View {\r\n _binding = FragmentUserListBinding.inflate(inflater, container, false)\r\n sharedPreference = requireContext().getSharedPreferences(\"PREFERENCE_NAME\", Context.MODE_PRIVATE)\r\n setupViews()\r\n return binding.root\r\n }\r\n\r\n override fun onResume() {\r\n super.onResume()\r\n init()\r\n }\r\n\r\n override fun onDestroyView() {\r\n super.onDestroyView()\r\n _binding = null\r\n }\r\n\r\n private fun setupViews() {\r\n binding.btnRegisterUser.setOnClickListener {\r\n findNavController().navigate(R.id.action_userListFragment_to_registrationFragment)\r\n }\r\n binding.btnLogout.setOnClickListener {\r\n logoutUser(requireContext())\r\n }\r\n }\r\n\r\n private fun init() {\r\n viewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable ->\r\n if (isNetworkAvailable) {\r\n isOnline = isNetworkAvailable\r\n fetchFromServer()\r\n checkForLocalDBData()\r\n } else {\r\n isOnline = isNetworkAvailable\r\n fetchFromLocalDB()\r\n }\r\n }\r\n\r\n binding.uploadData.setOnClickListener {\r\n showUploadDialog(requireContext())\r\n }\r\n\r\n viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->\r\n deteleIncompleteRegistration(userDataList)\r\n }\r\n }\r\n\r\n private fun logoutUser(context: Context) {\r\n val builder = AlertDialog.Builder(context)\r\n builder.setTitle(R.string.log_out)\r\n builder.setMessage(R.string.do_log_out)\r\n\r\n // Positive button\r\n builder.setPositiveButton(\"Yes\") { dialog, _ ->\r\n saveUserId()\r\n findNavController().navigate(R.id.action_userListFragment_to_loginFragment)\r\n dialog.dismiss()\r\n }\r\n\r\n // Negative button\r\n builder.setNegativeButton(\"No\") { dialog, _ ->\r\n dialog.dismiss()\r\n }\r\n\r\n val dialog = builder.create()\r\n dialog.show()\r\n }\r\n\r\n private fun saveUserId() {\r\n with(sharedPreference.edit()) {\r\n putString(Constant.USER_ID, \"\")\r\n apply()\r\n }\r\n }\r\n private fun showUploadDialog(context: Context) {\r\n val builder = AlertDialog.Builder(context)\r\n builder.setTitle(R.string.upload_db_registration)\r\n builder.setMessage(R.string.upload_local_db_to_cloud)\r\n\r\n // Positive button\r\n builder.setPositiveButton(R.string.upload) { dialog, _ ->\r\n uploadLoadDBData(dialog)\r\n }\r\n\r\n // Negative button\r\n builder.setNegativeButton(R.string.cancel) { dialog, _ ->\r\n dialog.dismiss()\r\n }\r\n\r\n val dialog = builder.create()\r\n dialog.show()\r\n }\r\n\r\n private fun uploadLoadDBData(dialog: DialogInterface) {\r\n viewModel.allUserData.observe(viewLifecycleOwner) {\r\n if (it.isEmpty()) {\r\n dialog.dismiss()\r\n } else {\r\n it.forEach { userData ->\r\n viewModel.addUserToDatabase(userData)\r\n viewModel.deleteById(userData._id)\r\n }\r\n dialog.dismiss()\r\n Toast.makeText(requireContext(), R.string.upload_done_successfully, Toast.LENGTH_SHORT)\r\n .show()\r\n }\r\n }\r\n }\r\n\r\n private fun checkForLocalDBData() {\r\n viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->\r\n if (userDataList.isEmpty()) {\r\n binding.uploadData.visibility = View.GONE\r\n } else {\r\n binding.uploadData.visibility = View.VISIBLE\r\n }\r\n }\r\n }\r\n\r\n private fun fetchFromServer() {\r\n binding.noList.visibility = View.GONE\r\n binding.rvOrder.visibility = View.VISIBLE\r\n val query = Firebase.firestore.collection(\"patientData\")\r\n val recyclerViewOptions =\r\n FirestoreRecyclerOptions.Builder<UserData>().setQuery(query, UserData::class.java)\r\n .build()\r\n val adapter = UserListOnlineAdapter(recyclerViewOptions, binding.root)\r\n binding.rvOrder.adapter = adapter\r\n adapter.startListening()\r\n }\r\n\r\n private fun fetchFromLocalDB() {\r\n binding.uploadData.visibility = View.GONE\r\n viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->\r\n if (isOnline) {\r\n binding.noList.visibility = View.GONE\r\n binding.rvOrder.visibility = View.VISIBLE\r\n } else {\r\n if (userDataList.isEmpty()) {\r\n binding.noList.visibility = View.VISIBLE\r\n binding.rvOrder.visibility = View.GONE\r\n } else {\r\n binding.noList.visibility = View.GONE\r\n binding.rvOrder.visibility = View.VISIBLE\r\n deteleIncompleteRegistration(userDataList)\r\n val adapter = UserListOfflineAdapter(binding.root)\r\n adapter.differ.submitList(userDataList)\r\n binding.rvOrder.adapter = adapter\r\n }\r\n }\r\n }\r\n }\r\n\r\n private fun deteleIncompleteRegistration(userDataList: List<UserData>) {\r\n userDataList.forEach {\r\n if (it.userImageURL.isEmpty()) {\r\n viewModel.deleteById(it._id)\r\n }\r\n }\r\n }\r\n}\r\n
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt
|
|
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt (date 1701672623825)
|
|
@@ -80,6 +80,10 @@
|
|
showUploadDialog(requireContext())
|
|
}
|
|
|
|
+ binding.btnsettings.setOnClickListener{
|
|
+ findNavController().navigate(R.id.action_userListFragment_to_languageSettingsFragment)
|
|
+
|
|
+ }
|
|
viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
|
|
deteleIncompleteRegistration(userDataList)
|
|
}
|
|
@@ -91,14 +95,14 @@
|
|
builder.setMessage(R.string.do_log_out)
|
|
|
|
// Positive button
|
|
- builder.setPositiveButton("Yes") { dialog, _ ->
|
|
+ builder.setPositiveButton(R.string.yes) { dialog, _ ->
|
|
saveUserId()
|
|
findNavController().navigate(R.id.action_userListFragment_to_loginFragment)
|
|
dialog.dismiss()
|
|
}
|
|
|
|
// Negative button
|
|
- builder.setNegativeButton("No") { dialog, _ ->
|
|
+ builder.setNegativeButton(R.string.no) { dialog, _ ->
|
|
dialog.dismiss()
|
|
}
|
|
|
|
Index: app/src/main/res/values/strings.xml
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+><resources>\r\n <string name=\"app_name\">HPOS Registration</string>\r\n <!-- TODO: Remove or change this placeholder text -->\r\n <string name=\"hello_blank_fragment\">Hello blank fragment</string>\r\n\r\n //Error message\r\n <string name=\"retry\">Retry</string>\r\n <string name=\"failed_to_connect\">Failed to connect</string>\r\n <string name=\"cancel\">Cancel</string>\r\n\r\n <string-array name=\"yes_no\">\r\n <item>Yes</item>\r\n <item>No</item>\r\n </string-array>\r\n\r\n //Registration Screens\r\n <string name=\"scan_person_abha_id_card\">Scan Person ABHA ID/Aadhar ID Card</string>\r\n <string name=\"scan_now\">Scan Now</string>\r\n <string name=\"or\">OR</string>\r\n <string name=\"enter_abha_number_manualy\">Enter ABHA and Aadhar Number</string>\r\n <string name=\"abha_id\">ABHA Number</string>\r\n <string name=\"create_abha_id_card\">Create ABHA ID card</string>\r\n <string name=\"click_here\">Click Here</string>\r\n <string name=\"scan_person_s_aadhaar_card\">Scan Person\\'s Aadhaar Card</string>\r\n <string name=\"proceed\">Proceed</string>\r\n <string name=\"enter_aadhaar_number_manualy\">Enter Aadhaar number manualy</string>\r\n <string name=\"aadhaar_number\">Aadhaar Number</string>\r\n <string name=\"enter_person_s_details\">Enter Person\\'s Details</string>\r\n <string name=\"person_s_name\">Person\\'s Name</string>\r\n <string name=\"age\">Age in years</string>\r\n <string name=\"gender\">Select Gender</string>\r\n <string name=\"name_error\">Name can\\'t be empty</string>\r\n <string name=\"age_error\">Age can\\'t be empty</string>\r\n <string name=\"gender_error\">Gender can\\'t be empty</string>\r\n <string name=\"age_error_out_of_bound\">Age should be valid</string>\r\n <string name=\"birth_year\">Birth Year</string>\r\n <string name=\"marital_status\">Select Marital status</string>\r\n <string name=\"father_s_husband_s_name\">Father\\'s/Husband\\'s Name</string>\r\n <string name=\"caste\">Caste</string>\r\n <string name=\"person_s_address_details\">Person\\'s Address Details</string>\r\n <string name=\"district\">District</string>\r\n <string name=\"city_town\">City / Town</string>\r\n <string name=\"state\">State</string>\r\n <string name=\"pincode\">Pincode</string>\r\n <string name=\"patient_medical_records\">Patient Medical Records</string>\r\n <string name=\"review\">Review</string>\r\n <string name=\"blood_group\">Select Blood Group</string>\r\n <string name=\"house\">House</string>\r\n <string name=\"is_patient_under_any_medication\">Have you been under medication for Sickle Cell in the past three months?</string>\r\n <string name=\"is_patient_undergoing_any_blood_transfusion\">Have you undergone any Blood transfusions in the Past three months ?</string>\r\n\r\n <string name=\"user_list\">User List</string>\r\n <string name=\"register_user\">Register User</string>\r\n <string name=\"is_user_having_any_family_history_for_sickle_cell\">Is user having any family history for Sickle Cell</string>\r\n <string name=\"family_history_of_sickle_cell\">Family History of Sickle Cell</string>\r\n <string name=\"mobile_number_10_digits\">Mobile Number (10 digits)</string>\r\n <string name=\"sub_caste\">Sub Caste</string>\r\n <string name=\"capture_user_image\">Capture User Image</string>\r\n <string name=\"mobile_number\">Mobile Number</string>\r\n <string name=\"edit\">Edit</string>\r\n <string name=\"user_details\">User Details</string>\r\n <string name=\"internet_is_not_available_and_there_is_no_data_available_in_local_db\">Internet is not available and there is no Data available in Local DB</string>\r\n <string name=\"user_id\">User ID: %1$s</string>\r\n <string name=\"abha_number\">Abha Number: %1$s</string>\r\n <string name=\"aadhar_number_details\">Aadhar Number: %1$s</string>\r\n <string name=\"user_name\">Person\\'s Name: %1$s</string>\r\n <string name=\"birth_year_details\">Birth Year: %1$s</string>\r\n <string name=\"gender_details\">Gender: %1$s</string>\r\n <string name=\"phone_number_details\">Mobile Number: %1$s</string>\r\n <string name=\"care_of_details\">Father\\'s/Husband\\'s Name: %1$s</string>\r\n <string name=\"marital_status_details\">Marital Status: %1$s</string>\r\n <string name=\"category_details\">Category: %1$s</string>\r\n <string name=\"caste_details\">Caste: %1$s</string>\r\n <string name=\"sub_caste_details\">Sub Caste: %1$s</string>\r\n <string name=\"house_details\">House: %1$s</string>\r\n <string name=\"city_town_details\">City/Town: %1$s</string>\r\n <string name=\"district_details\">District: %1$s</string>\r\n <string name=\"state_details\">State: %1$s</string>\r\n <string name=\"centre_name\">Center Name: %1$s</string>\r\n\r\n <string name=\"pincode_details\">Pincode: %1$s</string>\r\n <string name=\"is_patient_under_any_medication_details\">Is Under Medication: %1$s</string>\r\n <string name=\"is_patient_undergoing_any_blood_transfusion_details\">Is Under Blood Transfusion: %1$s</string>\r\n <string name=\"is_any_sickle\">Is Any Sickle cell History: %1$s</string>\r\n <string name=\"sickle_cell_family_history\">Sickle cell Family History: %1$s</string>\r\n <string name=\"center_name\">Center Name</string>\r\n <string name=\"login_id\">Login ID</string>\r\n <string name=\"password\">Password</string>\r\n <string name=\"login\">Login</string>\r\n <string name=\"_2\">Category</string>\r\n <string name=\"category\">Category</string>\r\n <string name=\"male\">Male</string>\r\n <string name=\"female\">Female</string>\r\n <string name=\"other\">Other</string>\r\n\r\n <string name=\"cancelled_unable_scan\">Cancelled: Unable to scan, Try Again!!</string>\r\n <string name=\"scan_abha_card\">Please Scan the Abha ID/Aadhar ID</string>\r\n <string name=\"invalid_qr_code\">The QR Code you have scanned is not valid, enter the data manually</string>\r\n <string name=\"enter_aadhar_manually\">You have scanned the Abha ID, need to enter Aadhar ID manually</string>\r\n <string name=\"invalid_abha_id\">Invalid Abha ID</string>\r\n <string name=\"invalid_aadhar_id\">Invalid Aadhar ID</string>\r\n <string name=\"name_field_error\">Name field can\\'t be empty or less than 3 characters</string>\r\n <string name=\"center_name_error\">Center name can\\'t be empty or less than 3 characters</string>\r\n <string name=\"registration_success\">Registration Done Successfully</string>\r\n <string name=\"internt_not_local\">Internet not available, test details stored locally</string>\r\n <string name=\"enter_details_properly\">Please enter all the details properly</string>\r\n <string name=\"enter_valid_birth_year\">Please enter a valid birth year between 1900 and 2023</string>\r\n <string name=\"fill_field\">Please fill the field</string>\r\n <string name=\"valid_mobile_number\">Please enter a valid 10-digit mobile number</string>\r\n <string name=\"enter_name\">Please enter your name</string>\r\n <string name=\"enter_marital_status\">Please enter your marital status</string>\r\n <string name=\"enter_category\">Please enter your category</string>\r\n <string name=\"enter_caste\">Please enter your caste</string>\r\n <string name=\"enter_house_address\">Please enter your house address</string>\r\n <string name=\"enter_city\">Please enter your city</string>\r\n <string name=\"enter_district\">Please enter your district</string>\r\n <string name=\"enter_state\">Please enter your state</string>\r\n <string name=\"enter_pincode\">Please enter a valid 6-digit pin code</string>\r\n <string name=\"enter_family_history\">Please enter your family history</string>\r\n <string name=\"enter_guardian_name\">Please enter your guardian name</string>\r\n <string name=\"enter_father_husband_name\">enter father/husband name</string>\r\n <string name=\"do_log_out\">Do you want to LogOut the Application?</string>\r\n <string name=\"log_out\">Log Out</string>\r\n <string name=\"upload_db_registration\">Upload DB Registration</string>\r\n <string name=\"upload_local_db_to_cloud\">Do you want to upload the local DB Registration to the cloud?</string>\r\n <string name=\"upload\">Upload</string>\r\n <string name=\"upload_done_successfully\">Upload done successfully</string>\r\n\r\n <string name=\"enter_proper_login_id\">Please enter a proper Login ID</string>\r\n <string name=\"enter_proper_password\">Please enter a proper password</string>\r\n <string name=\"wrong_password\">Wrong Password</string>\r\n <string name=\"wrong_user_id\">Wrong UserID</string>\r\n\r\n <string name=\"scanned_aadhar_id\">You have scanned the Aadhar ID, need to enter Aadhar ID number you have scanned and Abha ID manually</string>\r\n <string name=\"scanned_abha_id\">You have scanned the Abha ID</string>\r\n <string name=\"scanned_aadharid\">You have scanned the Aadhar ID</string>\r\n\r\n <string-array name=\"category\">\r\n <item>NT-A</item>\r\n <item>NT-B</item>\r\n <item>NT-C</item>\r\n <item>NT-D</item>\r\n <item>OBC</item>\r\n <item>OPEN</item>\r\n <item>OTHER</item>\r\n <item>SBC</item>\r\n <item>SC</item>\r\n <item>ST</item>\r\n </string-array>\r\n\r\n <string-array name=\"caste\">\r\n <item>AHIR</item>\r\n <item>BARAI</item>\r\n <item>BRAHMAN</item>\r\n <item>BUDDHIST</item>\r\n <item>CHAMBHAR</item>\r\n <item>CHAMAR</item>\r\n <item>DEWANGAN</item>\r\n <item>DHIWAR</item>\r\n <item>FULMALI</item>\r\n <item>GOND</item>\r\n <item>JAIN</item>\r\n <item>KOLI</item>\r\n <item>KOSHTI</item>\r\n <item>KUMBHAR</item>\r\n <item>KUNBI</item>\r\n <item>LOHAR</item>\r\n <item>MALI</item>\r\n <item>MANNA</item>\r\n <item>MAHAR</item>\r\n <item>MOURYA</item>\r\n <item>MUSLIM</item>\r\n <item>NAVI</item>\r\n <item>OTHER</item>\r\n <item>PAWAR</item>\r\n <item>PARDESI</item>\r\n <item>SHAHU</item>\r\n <item>SONAR</item>\r\n <item>TELI</item>\r\n </string-array>\r\n\r\n <string-array name=\"marital_status\">\r\n <item>Married</item>\r\n <item>Single</item>\r\n <item>Divorce</item>\r\n </string-array>\r\n\r\n <string-array name=\"blood_group\">\r\n <item>O+ve</item>\r\n <item>O-ve</item>\r\n <item>A+ve</item>\r\n <item>A-ve</item>\r\n <item>B+ve</item>\r\n <item>B-ve</item>\r\n <item>AB+ve</item>\r\n <item>AB-ve</item>\r\n </string-array>\r\n\r\n <string-array name=\"gender\">\r\n <item>Male</item>\r\n <item>Female</item>\r\n <item>Other</item>\r\n </string-array>\r\n\r\n</resources>
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
|
|
--- a/app/src/main/res/values/strings.xml (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/res/values/strings.xml (date 1701672536424)
|
|
@@ -7,7 +7,8 @@
|
|
<string name="retry">Retry</string>
|
|
<string name="failed_to_connect">Failed to connect</string>
|
|
<string name="cancel">Cancel</string>
|
|
-
|
|
+ <string name="yes">Yes</string>
|
|
+ <string name="no">No</string>
|
|
<string-array name="yes_no">
|
|
<item>Yes</item>
|
|
<item>No</item>
|
|
@@ -125,12 +126,17 @@
|
|
<string name="upload_local_db_to_cloud">Do you want to upload the local DB Registration to the cloud?</string>
|
|
<string name="upload">Upload</string>
|
|
<string name="upload_done_successfully">Upload done successfully</string>
|
|
-
|
|
+ <string name="language_update">Language updated successfully</string>
|
|
+ <string name="select_language">Select your preferred language</string>
|
|
+ <string name="app_language">App Language</string>
|
|
<string name="enter_proper_login_id">Please enter a proper Login ID</string>
|
|
<string name="enter_proper_password">Please enter a proper password</string>
|
|
<string name="wrong_password">Wrong Password</string>
|
|
<string name="wrong_user_id">Wrong UserID</string>
|
|
-
|
|
+ <string name="userid">User Id</string>
|
|
+ <string name="name">Name</string>
|
|
+ <string name="ok">OK</string>
|
|
+ <string name="add_blood_group">Add Blood Group</string>
|
|
<string name="scanned_aadhar_id">You have scanned the Aadhar ID, need to enter Aadhar ID number you have scanned and Abha ID manually</string>
|
|
<string name="scanned_abha_id">You have scanned the Abha ID</string>
|
|
<string name="scanned_aadharid">You have scanned the Aadhar ID</string>
|
|
Index: app/src/main/res/values-ka/strings.xml
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-kn/strings.xml
|
|
rename from app/src/main/res/values-ka/strings.xml
|
|
rename to app/src/main/res/values-kn/strings.xml
|
|
--- a/app/src/main/res/values-ka/strings.xml (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/res/values-kn/strings.xml (date 1701672555890)
|
|
@@ -132,8 +132,15 @@
|
|
|
|
<string name="scanned_abha_id">ನೀವು ಅಭಾ ಐಡನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿದಿರಿ</string>
|
|
<string name="scanned_aadharid">ನೀವು ಆಧಾರ್ ಐಡನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿದಿರಿ</string>
|
|
-
|
|
-
|
|
+ <string name="language_update">ಭಾಷೆ ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ</string>
|
|
+ <string name="select_language">ನಿಮ್ಮ ಆದರಿತ ಭಾಷೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</string>
|
|
+ <string name="app_language">ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ</string>
|
|
+ <string name="add_blood_group">ರಕ್ತ ಗುಂಡನ್ನು ಸೇರಿಸಿ</string>
|
|
+ <string name="userid">ಬಳಕೆದಾರ ಐಡಿ</string>
|
|
+ <string name="ok">ಸರಿ</string>
|
|
+ <string name="yes">ಹೌದು</string>
|
|
+ <string name="no">ಇಲ್ಲ</string>
|
|
+ <string name="name">ಹೆಸರು</string>
|
|
<string-array name="yes_no">
|
|
<item>ಹೌದು</item>
|
|
<item>ಇಲ್ಲ</item>
|
|
Index: app/src/main/java/com/example/hposregistration/ui/fragments/LanguageSettingsFragment.kt
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/LanguageSettingsFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/LanguageSettingsFragment.kt
|
|
new file mode 100644
|
|
--- /dev/null (date 1701444127868)
|
|
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/LanguageSettingsFragment.kt (date 1701444127868)
|
|
@@ -0,0 +1,69 @@
|
|
+package com.example.hposregistration.ui.fragments
|
|
+
|
|
+import android.content.Context
|
|
+import android.content.pm.PackageManager
|
|
+import android.os.Bundle
|
|
+import android.preference.ListPreference
|
|
+import androidx.fragment.app.Fragment
|
|
+import android.view.LayoutInflater
|
|
+import android.view.View
|
|
+import android.view.ViewGroup
|
|
+import android.widget.Toast
|
|
+import androidx.preference.Preference
|
|
+import androidx.preference.PreferenceFragmentCompat
|
|
+import com.example.hposregistration.data.LanguageManager
|
|
+import `in`.sminnovations.hposregistration.R
|
|
+
|
|
+private var isLanguageChanged = false
|
|
+class LanguageSettingsFragment : PreferenceFragmentCompat() {
|
|
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
|
+ val preferenceScreen = preferenceManager.createPreferenceScreen(requireContext())
|
|
+
|
|
+ val languagePreference = androidx.preference.ListPreference(requireContext())
|
|
+ languagePreference.key = "language_preference"
|
|
+ languagePreference.title = getString(R.string.app_language)
|
|
+ languagePreference.summary = getString(R.string.select_language)
|
|
+ languagePreference.entries = arrayOf("English", "Kannada", "Hindi")
|
|
+ languagePreference.entryValues = arrayOf("en", "kn", "hi")
|
|
+ languagePreference.setDefaultValue("en")
|
|
+
|
|
+ languagePreference.onPreferenceChangeListener =
|
|
+ Preference.OnPreferenceChangeListener { _, newValue ->
|
|
+ val languageCode = newValue as String
|
|
+ updateLanguage(requireContext(), languageCode)
|
|
+ true
|
|
+ }
|
|
+
|
|
+ preferenceScreen.addPreference(languagePreference)
|
|
+ setPreferenceScreen(preferenceScreen)
|
|
+
|
|
+ // App Version Preference
|
|
+ val appVersionPreference = Preference(requireContext())
|
|
+ appVersionPreference.title = "App Version"
|
|
+ appVersionPreference.summary = getAppVersion(requireContext())
|
|
+
|
|
+ preferenceScreen.addPreference(languagePreference)
|
|
+ preferenceScreen.addPreference(appVersionPreference)
|
|
+ setPreferenceScreen(preferenceScreen)
|
|
+
|
|
+ if (isLanguageChanged) {
|
|
+ Toast.makeText(requireContext(), R.string.language_update, Toast.LENGTH_SHORT).show()
|
|
+ }
|
|
+ }
|
|
+
|
|
+ private fun updateLanguage(context: Context, languageCode: String) {
|
|
+ LanguageManager.persistLanguagePreference(context, languageCode)
|
|
+ LanguageManager.setLocale(context, languageCode)
|
|
+ requireActivity().recreate() // Recreate activity to apply language changes
|
|
+ isLanguageChanged = true
|
|
+ }
|
|
+
|
|
+ private fun getAppVersion(context: Context): String {
|
|
+ return try {
|
|
+ val pInfo = context.packageManager.getPackageInfo(context.packageName, 0)
|
|
+ pInfo.versionName
|
|
+ } catch (e: PackageManager.NameNotFoundException) {
|
|
+ "N/A"
|
|
+ }
|
|
+ }
|
|
+}
|
|
\ No newline at end of file
|
|
Index: app/src/main/res/navigation/main_nav_graph.xml
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+><?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<navigation xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n xmlns:app=\"http://schemas.android.com/apk/res-auto\"\r\n xmlns:tools=\"http://schemas.android.com/tools\"\r\n android:id=\"@+id/main_nav_graph\"\r\n app:startDestination=\"@id/loginFragment\">\r\n\r\n <fragment\r\n android:id=\"@+id/registrationFragment\"\r\n android:name=\"com.example.hposregistration.ui.fragments.registration.AbhaRegistrationFragment\"\r\n android:label=\"fragment_registration\"\r\n tools:layout=\"@layout/fragment_abha_registration\" >\r\n <action\r\n android:id=\"@+id/action_registrationFragment_to_userDetailsRegistrationFragment\"\r\n app:destination=\"@id/userDetailsRegistrationFragment\" />\r\n <argument\r\n android:name=\"userId\"\r\n app:argType=\"string\"\r\n android:defaultValue=\"null\" />\r\n </fragment>\r\n <fragment\r\n android:id=\"@+id/userListFragment\"\r\n android:name=\"com.example.hposregistration.ui.fragments.UserListFragment\"\r\n android:label=\"fragment_user_list\"\r\n tools:layout=\"@layout/fragment_user_list\" >\r\n <action\r\n android:id=\"@+id/action_userListFragment_to_registrationFragment\"\r\n app:destination=\"@id/registrationFragment\" />\r\n <action\r\n android:id=\"@+id/action_userListFragment_to_loginFragment\"\r\n app:destination=\"@id/loginFragment\"\r\n app:popUpTo=\"@id/main_nav_graph\"\r\n app:popUpToInclusive=\"true\"/>\r\n </fragment>\r\n <fragment\r\n android:id=\"@+id/profileFragment\"\r\n android:name=\"com.example.hposregistration.ui.fragments.ProfileFragment\"\r\n android:label=\"fragment_profile\"\r\n tools:layout=\"@layout/fragment_profile\" />\r\n <fragment\r\n android:id=\"@+id/userDetailsRegistrationFragment\"\r\n android:name=\"com.example.hposregistration.ui.fragments.registration.UserDetailsRegistrationFragment\"\r\n android:label=\"fragment_user_details_registration\"\r\n tools:layout=\"@layout/fragment_user_details_registration\" >\r\n <argument\r\n android:name=\"userId\"\r\n app:argType=\"string\" />\r\n <action\r\n android:id=\"@+id/action_userDetailsRegistrationFragment_to_captureUserImageFragment2\"\r\n app:destination=\"@id/captureUserImageFragment2\" />\r\n </fragment>\r\n <fragment\r\n android:id=\"@+id/reviewDetailsRegistrationFragment\"\r\n android:name=\"com.example.hposregistration.ui.fragments.registration.ReviewDetailsRegistrationFragment\"\r\n android:label=\"fragment_review_details_registration\"\r\n tools:layout=\"@layout/fragment_review_details_registration\" >\r\n <argument\r\n android:name=\"userId\"\r\n app:argType=\"string\" />\r\n <action\r\n android:id=\"@+id/action_reviewDetailsRegistrationFragment_to_userListFragment\"\r\n app:destination=\"@id/userListFragment\"\r\n app:popUpTo=\"@id/main_nav_graph\"\r\n app:popUpToInclusive=\"true\"/>\r\n <action\r\n android:id=\"@+id/action_reviewDetailsRegistrationFragment_to_registrationFragment\"\r\n app:destination=\"@id/registrationFragment\"\r\n app:popUpTo=\"@id/main_nav_graph\"\r\n app:popUpToInclusive=\"true\"/>\r\n </fragment>\r\n <fragment\r\n android:id=\"@+id/captureUserImageFragment2\"\r\n android:name=\"com.example.hposregistration.ui.fragments.registration.CaptureUserImageFragment\"\r\n android:label=\"fragment_capture_user_image\"\r\n tools:layout=\"@layout/fragment_capture_user_image\" >\r\n <action\r\n android:id=\"@+id/action_captureUserImageFragment2_to_reviewDetailsRegistrationFragment\"\r\n app:destination=\"@id/reviewDetailsRegistrationFragment\" />\r\n <argument\r\n android:name=\"userId\"\r\n app:argType=\"string\"\r\n android:defaultValue=\"null\" />\r\n </fragment>\r\n\r\n <fragment\r\n android:id=\"@+id/loginFragment\"\r\n android:name=\"com.example.hposregistration.ui.fragments.LoginFragment\"\r\n android:label=\"fragment_login\"\r\n tools:layout=\"@layout/fragment_login\" >\r\n <action\r\n android:id=\"@+id/action_loginFragment_to_userListFragment\"\r\n app:destination=\"@id/userListFragment\"\r\n app:popUpTo=\"@id/main_nav_graph\"\r\n app:popUpToInclusive=\"true\"/>\r\n </fragment>\r\n</navigation>
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml
|
|
--- a/app/src/main/res/navigation/main_nav_graph.xml (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/res/navigation/main_nav_graph.xml (date 1701444669915)
|
|
@@ -31,6 +31,9 @@
|
|
app:destination="@id/loginFragment"
|
|
app:popUpTo="@id/main_nav_graph"
|
|
app:popUpToInclusive="true"/>
|
|
+ <action
|
|
+ android:id="@+id/action_userListFragment_to_languageSettingsFragment"
|
|
+ app:destination="@id/languageSettingsFragment" />
|
|
</fragment>
|
|
<fragment
|
|
android:id="@+id/profileFragment"
|
|
@@ -93,4 +96,16 @@
|
|
app:popUpTo="@id/main_nav_graph"
|
|
app:popUpToInclusive="true"/>
|
|
</fragment>
|
|
+ <fragment
|
|
+ android:id="@+id/languageSettingsFragment"
|
|
+ android:name="com.example.hposregistration.ui.fragments.LanguageSettingsFragment"
|
|
+ android:label="fragment_language_settings"
|
|
+ tools:layout="@layout/fragment_language_settings">
|
|
+
|
|
+ <action
|
|
+ android:id="@+id/action_userListFragment_to_languageSettingsFragment"
|
|
+ app:destination="@id/languageSettingsFragment"
|
|
+ app:popUpTo="@id/main_nav_graph"
|
|
+ app:popUpToInclusive="true"/>
|
|
+ </fragment>
|
|
</navigation>
|
|
\ No newline at end of file
|
|
Index: app/src/main/res/layout/fragment_language_settings.xml
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/res/layout/fragment_language_settings.xml b/app/src/main/res/layout/fragment_language_settings.xml
|
|
new file mode 100644
|
|
--- /dev/null (date 1701443505350)
|
|
+++ b/app/src/main/res/layout/fragment_language_settings.xml (date 1701443505350)
|
|
@@ -0,0 +1,13 @@
|
|
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
+ xmlns:tools="http://schemas.android.com/tools"
|
|
+ android:layout_width="match_parent"
|
|
+ android:layout_height="match_parent"
|
|
+ tools:context="com.example.hposregistration.ui.fragments.LanguageSettingsFragment">
|
|
+
|
|
+ <!-- TODO: Update blank fragment layout -->
|
|
+ <TextView
|
|
+ android:layout_width="match_parent"
|
|
+ android:layout_height="match_parent"
|
|
+ android:text="@string/hello_blank_fragment" />
|
|
+
|
|
+</FrameLayout>
|
|
\ No newline at end of file
|
|
Index: app/src/main/res/layout/fragment_user_list.xml
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+><?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n\r\n\r\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n xmlns:app=\"http://schemas.android.com/apk/res-auto\"\r\n xmlns:tools=\"http://schemas.android.com/tools\"\r\n android:layout_width=\"match_parent\"\r\n android:layout_height=\"match_parent\"\r\n android:padding=\"24dp\"\r\n tools:context=\"com.example.hposregistration.ui.fragments.UserListFragment\">\r\n <LinearLayout\r\n android:visibility=\"gone\"\r\n android:id=\"@+id/fragment_layout\"\r\n android:layout_width=\"match_parent\"\r\n android:layout_height=\"match_parent\"\r\n android:orientation=\"vertical\">\r\n </LinearLayout>\r\n <TextView\r\n android:id=\"@+id/tv_title\"\r\n style=\"@style/title1\"\r\n android:layout_width=\"wrap_content\"\r\n android:layout_height=\"wrap_content\"\r\n android:text=\"@string/user_details\"\r\n app:layout_constraintEnd_toEndOf=\"parent\"\r\n app:layout_constraintStart_toStartOf=\"parent\"\r\n app:layout_constraintTop_toTopOf=\"parent\" />\r\n\r\n <TextView\r\n android:id=\"@+id/noList\"\r\n style=\"@style/title1\"\r\n android:layout_width=\"wrap_content\"\r\n android:layout_height=\"wrap_content\"\r\n android:gravity=\"center\"\r\n android:text=\"@string/internet_is_not_available_and_there_is_no_data_available_in_local_db\"\r\n android:textColor=\"@color/red\"\r\n android:visibility=\"gone\"\r\n app:layout_constraintBottom_toBottomOf=\"parent\"\r\n app:layout_constraintEnd_toEndOf=\"parent\"\r\n app:layout_constraintStart_toStartOf=\"parent\"\r\n app:layout_constraintTop_toTopOf=\"parent\" />\r\n\r\n <ImageView\r\n android:id=\"@+id/uploadData\"\r\n android:layout_width=\"30dp\"\r\n android:layout_height=\"30dp\"\r\n android:layout_margin=\"5dp\"\r\n android:src=\"@drawable/upload_data\"\r\n android:visibility=\"gone\"\r\n app:layout_constraintBottom_toBottomOf=\"@+id/tv_title\"\r\n app:layout_constraintEnd_toEndOf=\"parent\"\r\n app:layout_constraintTop_toTopOf=\"@+id/tv_title\" />\r\n\r\n <ImageView\r\n android:id=\"@+id/btnLogout\"\r\n android:layout_width=\"30dp\"\r\n android:layout_height=\"30dp\"\r\n android:layout_marginEnd=\"10dp\"\r\n android:src=\"@drawable/ic_logout\"\r\n app:layout_constraintBottom_toBottomOf=\"@+id/tv_title\"\r\n app:layout_constraintEnd_toStartOf=\"@+id/uploadData\"\r\n app:layout_constraintTop_toTopOf=\"@+id/tv_title\" />\r\n\r\n <androidx.recyclerview.widget.RecyclerView\r\n android:id=\"@+id/rv_order\"\r\n android:layout_width=\"0dp\"\r\n android:layout_height=\"0dp\"\r\n app:layoutManager=\"androidx.recyclerview.widget.LinearLayoutManager\"\r\n app:layout_constraintBottom_toBottomOf=\"parent\"\r\n app:layout_constraintEnd_toEndOf=\"parent\"\r\n app:layout_constraintStart_toStartOf=\"parent\"\r\n app:layout_constraintTop_toBottomOf=\"@+id/tv_title\"\r\n tools:listitem=\"@layout/user_item_view\" />\r\n\r\n <com.google.android.material.floatingactionbutton.FloatingActionButton\r\n android:id=\"@+id/btnRegisterUser\"\r\n android:layout_width=\"wrap_content\"\r\n android:layout_height=\"wrap_content\"\r\n android:layout_margin=\"8dp\"\r\n android:backgroundTint=\"@color/primary\"\r\n android:contentDescription=\"@string/register_user\"\r\n android:src=\"@drawable/ic_add\"\r\n app:elevation=\"1dp\"\r\n app:layout_constraintBottom_toBottomOf=\"parent\"\r\n app:layout_constraintEnd_toEndOf=\"parent\" />\r\n\r\n\r\n\r\n</androidx.constraintlayout.widget.ConstraintLayout>
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/res/layout/fragment_user_list.xml b/app/src/main/res/layout/fragment_user_list.xml
|
|
--- a/app/src/main/res/layout/fragment_user_list.xml (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/res/layout/fragment_user_list.xml (date 1701412625829)
|
|
@@ -16,6 +16,14 @@
|
|
android:layout_height="match_parent"
|
|
android:orientation="vertical">
|
|
</LinearLayout>
|
|
+ <ImageView
|
|
+ android:id="@+id/btnsettings"
|
|
+ android:layout_width="30dp"
|
|
+ android:layout_height="30dp"
|
|
+ android:layout_marginEnd="10dp"
|
|
+ android:src="@drawable/baseline_settings_24"
|
|
+ app:layout_constraintStart_toStartOf="parent"
|
|
+ app:layout_constraintTop_toTopOf="@+id/tv_title" />
|
|
<TextView
|
|
android:id="@+id/tv_title"
|
|
style="@style/title1"
|
|
Index: app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+>package com.example.hposregistration.ui.activities\r\n\r\nimport androidx.appcompat.app.AppCompatActivity\r\nimport android.os.Bundle\r\nimport dagger.hilt.android.AndroidEntryPoint\r\nimport `in`.sminnovations.hposregistration.databinding.ActivityMainBinding\r\n\r\n@AndroidEntryPoint\r\nclass MainActivity : AppCompatActivity() {\r\n\r\n private lateinit var binding: ActivityMainBinding\r\n\r\n override fun onCreate(savedInstanceState: Bundle?) {\r\n super.onCreate(savedInstanceState)\r\n binding = ActivityMainBinding.inflate(layoutInflater)\r\n setContentView(binding.root)\r\n\r\n }\r\n}
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt b/app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt
|
|
--- a/app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt (date 1701444669860)
|
|
@@ -1,7 +1,9 @@
|
|
package com.example.hposregistration.ui.activities
|
|
|
|
+import android.content.Context
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import android.os.Bundle
|
|
+import com.example.hposregistration.data.LanguageManager
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
import `in`.sminnovations.hposregistration.databinding.ActivityMainBinding
|
|
|
|
@@ -9,6 +11,12 @@
|
|
class MainActivity : AppCompatActivity() {
|
|
|
|
private lateinit var binding: ActivityMainBinding
|
|
+ override fun attachBaseContext(newBase: Context?) {
|
|
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
|
|
+ LanguageManager.setLocale(newBase, languageCode)
|
|
+ super.attachBaseContext(newBase)
|
|
+ }
|
|
+
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
Index: app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+>package com.example.hposregistration.ui.fragments\r\n\r\nimport android.content.Context\r\nimport android.content.SharedPreferences\r\nimport android.os.Bundle\r\nimport android.view.LayoutInflater\r\nimport android.view.View\r\nimport android.view.ViewGroup\r\nimport android.widget.Toast\r\nimport androidx.fragment.app.Fragment\r\nimport androidx.navigation.fragment.findNavController\r\nimport com.example.hposregistration.data.Constant\r\nimport `in`.sminnovations.hposregistration.R\r\nimport `in`.sminnovations.hposregistration.databinding.FragmentLoginBinding\r\n\r\nclass LoginFragment : Fragment() {\r\n\r\n private var _binding: FragmentLoginBinding? = null\r\n private val binding get() = _binding!!\r\n private lateinit var sharedPreference: SharedPreferences\r\n\r\n override fun onCreateView(\r\n inflater: LayoutInflater, container: ViewGroup?,\r\n savedInstanceState: Bundle?\r\n ): View {\r\n _binding = FragmentLoginBinding.inflate(inflater, container, false)\r\n sharedPreference = requireContext().getSharedPreferences(\"PREFERENCE_NAME\", Context.MODE_PRIVATE)\r\n return binding.root\r\n }\r\n\r\n override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\r\n super.onViewCreated(view, savedInstanceState)\r\n init()\r\n }\r\n\r\n private fun init() {\r\n if (isUserLoggedIn()) {\r\n navigateToUserListFragment()\r\n return\r\n }\r\n\r\n binding.btnLogin.setOnClickListener {\r\n val loginId = binding.loginId.text.toString()\r\n val password = binding.password.text.toString()\r\n\r\n if (loginId.isNotBlank() && password.isNotBlank()) {\r\n performLogin(loginId, password)\r\n } else {\r\n if (loginId.isBlank()) {\r\n binding.loginId.error = R.string.enter_proper_login_id.toString()\r\n }\r\n if (password.isBlank()) {\r\n binding.password.error = R.string.enter_proper_password.toString()\r\n }\r\n }\r\n }\r\n }\r\n\r\n private fun isUserLoggedIn(): Boolean {\r\n return sharedPreference.getString(Constant.USER_ID, \"\")?.isNotBlank() == true\r\n }\r\n\r\n private fun navigateToUserListFragment() {\r\n findNavController().navigate(R.id.action_loginFragment_to_userListFragment)\r\n }\r\n\r\n private fun performLogin(loginId: String, password: String) {\r\n val matchingId = Constant.STATICID.firstOrNull { it == loginId }\r\n if (matchingId != null) {\r\n if (password == Constant.password) {\r\n saveUserId(loginId)\r\n navigateToUserListFragment()\r\n return\r\n } else {\r\n Toast.makeText(requireContext(), R.string.wrong_password, Toast.LENGTH_SHORT).show()\r\n }\r\n }\r\n Toast.makeText(requireContext(), R.string.wrong_user_id, Toast.LENGTH_SHORT).show()\r\n }\r\n\r\n private fun saveUserId(userId: String) {\r\n with(sharedPreference.edit()) {\r\n putString(Constant.USER_ID, userId)\r\n apply()\r\n }\r\n }\r\n\r\n override fun onDestroyView() {\r\n super.onDestroyView()\r\n _binding = null\r\n }\r\n}\r\n
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt
|
|
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt (date 1701443506066)
|
|
@@ -47,10 +47,10 @@
|
|
performLogin(loginId, password)
|
|
} else {
|
|
if (loginId.isBlank()) {
|
|
- binding.loginId.error = R.string.enter_proper_login_id.toString()
|
|
+ binding.loginId.error = getString(R.string.enter_proper_login_id)
|
|
}
|
|
if (password.isBlank()) {
|
|
- binding.password.error = R.string.enter_proper_password.toString()
|
|
+ binding.password.error = getString(R.string.enter_proper_password)
|
|
}
|
|
}
|
|
}
|
|
Index: app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+>package com.example.hposregistration.ui.fragments.registration\r\n\r\nimport android.os.Bundle\r\nimport android.view.LayoutInflater\r\nimport android.view.View\r\nimport android.view.ViewGroup\r\nimport android.widget.Toast\r\nimport androidx.fragment.app.viewModels\r\nimport androidx.navigation.fragment.findNavController\r\nimport androidx.navigation.fragment.navArgs\r\nimport com.example.hposregistration.data.Constant.fetchYOBFromDOB\r\nimport com.example.hposregistration.data.Constant.mapToGender\r\nimport com.example.hposregistration.data.SecureQrCode\r\nimport com.example.hposregistration.data.user.UserData\r\nimport com.example.hposregistration.ui.fragments.BaseFragment\r\nimport com.example.hposregistration.ui.viewmodels.RegistrationViewModel\r\nimport com.journeyapps.barcodescanner.ScanContract\r\nimport com.journeyapps.barcodescanner.ScanIntentResult\r\nimport dagger.hilt.android.AndroidEntryPoint\r\nimport `in`.sminnovations.hposregistration.R\r\nimport `in`.sminnovations.hposregistration.databinding.FragmentAbhaRegistrationBinding\r\nimport org.json.JSONObject\r\n\r\n@AndroidEntryPoint\r\nclass AbhaRegistrationFragment : BaseFragment() {\r\n\r\n private var _binding: FragmentAbhaRegistrationBinding? = null\r\n private val binding get() = _binding!!\r\n\r\n private val viewModel by viewModels<RegistrationViewModel>()\r\n private val args: AbhaRegistrationFragmentArgs by navArgs()\r\n private var userData = UserData()\r\n\r\n private val barcodeLauncher =\r\n registerForActivityResult(ScanContract()) { result: ScanIntentResult ->\r\n if (result.contents == null) {\r\n Toast.makeText(\r\n requireContext(), R.string.cancelled_unable_scan, Toast.LENGTH_LONG\r\n ).show()\r\n } else {\r\n processScannedData(result.contents)\r\n }\r\n }\r\n\r\n override fun onCreateView(\r\n inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?\r\n ): View {\r\n _binding = FragmentAbhaRegistrationBinding.inflate(inflater, container, false)\r\n return binding.root\r\n }\r\n\r\n override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\r\n super.onViewCreated(view, savedInstanceState)\r\n init()\r\n }\r\n\r\n private fun init() {\r\n binding.btnScanNow.setOnClickListener {\r\n barcodeLauncher.launch(scanQR(\"Please Scan the Abha ID/Aadhar ID\"))\r\n }\r\n\r\n if (args.userId != \"null\") {\r\n viewModel.getUserByID(args.userId)\r\n }\r\n\r\n viewModel.userData.observe(viewLifecycleOwner) { user ->\r\n userData = user\r\n with(binding) {\r\n aadharID.setText(user.aadharId)\r\n etAbhaId.setText(user.abhaId)\r\n etName.setText(user.name)\r\n centerName.setText(user.registrationCenterName)\r\n\r\n }\r\n }\r\n\r\n binding.btnProceed.setOnClickListener {\r\n val abhaIdInput = binding.etAbhaId.text.toString()\r\n val userName = binding.etName.text.toString()\r\n val aadharIdInput = binding.aadharID.text.toString()\r\n val centerName = binding.centerName.text.toString()\r\n\r\n if (validateInputs(abhaIdInput, aadharIdInput, userName, centerName)) {\r\n userData.apply {\r\n name = userName\r\n aadharId = aadharIdInput\r\n abhaId = abhaIdInput\r\n registrationCenterName = centerName\r\n _id = aadharId + userName.substring(0, 3).uppercase() + centerName.substring(0, 3).uppercase()\r\n }\r\n\r\n viewModel.insert(userData)\r\n\r\n navigateToUserDetailsFragment(userData._id)\r\n }\r\n }\r\n }\r\n\r\n private fun processScannedData(contents: String) {\r\n try {\r\n val obj = JSONObject(contents)\r\n\r\n userData.apply {\r\n abhaId = obj.getString(\"hidn\").replace(\"-\", \"\")\r\n name = obj.getString(\"name\")\r\n birthYear = obj.getString(\"dob\").fetchYOBFromDOB().toString()\r\n gender = obj.getString(\"gender\").mapToGender().toString()\r\n phoneNumber = obj.getString(\"mobile\")\r\n\r\n state = obj.getString(\"state name\")\r\n district = obj.getString(\"district_name\")\r\n house = obj.getString(\"address\")\r\n }\r\n\r\n if (userData.abhaId.isNotEmpty()) {\r\n saveUserDataAsPerAbhaId()\r\n } else {\r\n saveUserDataAsPerAadharId()\r\n }\r\n } catch (e: Exception) {\r\n try {\r\n val decodedData = SecureQrCode(contents)\r\n val aadharData = decodedData.scannedAadharCard\r\n userData.apply {\r\n name = aadharData.name\r\n birthYear = aadharData.dateOfBirth.fetchYOBFromDOB().toString()\r\n gender = aadharData.gender.mapToGender().toString()\r\n state = aadharData.state\r\n district = aadharData.district\r\n house = aadharData.house\r\n }\r\n\r\n saveUserDataAsPerAadharId()\r\n } catch (e: Exception) {\r\n Toast.makeText(\r\n requireContext(),\r\n R.string.invalid_qr_code,\r\n Toast.LENGTH_SHORT\r\n ).show()\r\n }\r\n }\r\n }\r\n\r\n private fun saveUserDataAsPerAbhaId() {\r\n with(binding) {\r\n tvScanMessage.visibility = View.VISIBLE\r\n tvScanMessage.text = R.string.enter_aadhar_manually.toString()\r\n etAbhaId.setText(userData.abhaId)\r\n etName.setText(userData.name)\r\n }\r\n Toast.makeText(\r\n requireContext(), R.string.scanned_abha_id, Toast.LENGTH_SHORT\r\n ).show()\r\n }\r\n\r\n private fun saveUserDataAsPerAadharId() {\r\n with(binding) {\r\n tvScanMessage.text =\r\n R.string.scanned_aadhar_id.toString()\r\n etName.setText(userData.name)\r\n }\r\n Toast.makeText(\r\n requireContext(), R.string.scanned_aadharid, Toast.LENGTH_SHORT\r\n ).show()\r\n }\r\n\r\n private fun validateInputs(\r\n abhaId: String, aadharId: String, userName: String, centerName: String\r\n ): Boolean {\r\n with(binding) {\r\n if (!checkAbhaIDNumber(abhaId)) {\r\n etAbhaId.error = R.string.invalid_abha_id.toString()\r\n return false\r\n }\r\n if (!checkAadharIDNumber(aadharId)) {\r\n aadharID.error = R.string.invalid_aadhar_id.toString()\r\n return false\r\n }\r\n if (!checkUserName(userName)) {\r\n etName.error = R.string.name_field_error.toString()\r\n return false\r\n }\r\n if (!checkCenterName(centerName)) {\r\n etCenterName.error = R.string.center_name_error.toString()\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n\r\n private fun checkAbhaIDNumber(abhaId: String): Boolean {\r\n return abhaId.isNotEmpty() && abhaId.length >= 14\r\n }\r\n\r\n private fun checkAadharIDNumber(aadharId: String): Boolean {\r\n return aadharId.isNotEmpty() && aadharId.length >= 12\r\n }\r\n\r\n private fun checkUserName(userName: String): Boolean {\r\n return userName.isNotEmpty() && userName.length >= 3\r\n }\r\n\r\n private fun checkCenterName(centerName: String): Boolean {\r\n return centerName.isNotEmpty() && centerName.length >= 3\r\n }\r\n\r\n private fun navigateToUserDetailsFragment(userId: String) {\r\n val action =\r\n AbhaRegistrationFragmentDirections.actionRegistrationFragmentToUserDetailsRegistrationFragment(\r\n userId\r\n )\r\n findNavController().navigate(action)\r\n }\r\n\r\n override fun onDestroyView() {\r\n super.onDestroyView()\r\n _binding = null\r\n }\r\n}\r\n
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt
|
|
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt (date 1701443506082)
|
|
@@ -144,7 +144,7 @@
|
|
private fun saveUserDataAsPerAbhaId() {
|
|
with(binding) {
|
|
tvScanMessage.visibility = View.VISIBLE
|
|
- tvScanMessage.text = R.string.enter_aadhar_manually.toString()
|
|
+ tvScanMessage.text = getString(R.string.enter_aadhar_manually)
|
|
etAbhaId.setText(userData.abhaId)
|
|
etName.setText(userData.name)
|
|
}
|
|
@@ -156,7 +156,7 @@
|
|
private fun saveUserDataAsPerAadharId() {
|
|
with(binding) {
|
|
tvScanMessage.text =
|
|
- R.string.scanned_aadhar_id.toString()
|
|
+ getString(R.string.scanned_aadhar_id)
|
|
etName.setText(userData.name)
|
|
}
|
|
Toast.makeText(
|
|
@@ -169,19 +169,19 @@
|
|
): Boolean {
|
|
with(binding) {
|
|
if (!checkAbhaIDNumber(abhaId)) {
|
|
- etAbhaId.error = R.string.invalid_abha_id.toString()
|
|
+ etAbhaId.error = getString(R.string.invalid_abha_id)
|
|
return false
|
|
}
|
|
if (!checkAadharIDNumber(aadharId)) {
|
|
- aadharID.error = R.string.invalid_aadhar_id.toString()
|
|
+ aadharID.error = getString(R.string.invalid_aadhar_id)
|
|
return false
|
|
}
|
|
if (!checkUserName(userName)) {
|
|
- etName.error = R.string.name_field_error.toString()
|
|
+ etName.error = getString(R.string.name_field_error)
|
|
return false
|
|
}
|
|
if (!checkCenterName(centerName)) {
|
|
- etCenterName.error = R.string.center_name_error.toString()
|
|
+ etCenterName.error = getString(R.string.center_name_error)
|
|
return false
|
|
}
|
|
}
|
|
Index: app/src/main/java/com/example/hposregistration/data/LanguageManager.kt
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/java/com/example/hposregistration/data/LanguageManager.kt b/app/src/main/java/com/example/hposregistration/data/LanguageManager.kt
|
|
new file mode 100644
|
|
--- /dev/null (date 1701444127833)
|
|
+++ b/app/src/main/java/com/example/hposregistration/data/LanguageManager.kt (date 1701444127833)
|
|
@@ -0,0 +1,30 @@
|
|
+package com.example.hposregistration.data
|
|
+
|
|
+import android.content.Context
|
|
+import android.content.SharedPreferences
|
|
+import java.util.Locale
|
|
+
|
|
+object LanguageManager {
|
|
+ private const val LANGUAGE_PREF_KEY = "language_pref"
|
|
+
|
|
+ fun setLocale(context: Context, languageCode: String) {
|
|
+ val locale = Locale(languageCode)
|
|
+ Locale.setDefault(locale)
|
|
+
|
|
+ val resources = context.resources
|
|
+ val configuration = resources.configuration
|
|
+ configuration.setLocale(locale)
|
|
+
|
|
+ context.createConfigurationContext(configuration)
|
|
+ }
|
|
+
|
|
+ fun persistLanguagePreference(context: Context, languageCode: String) {
|
|
+ val prefs: SharedPreferences = context.getSharedPreferences("AppPrefs", Context.MODE_PRIVATE)
|
|
+ prefs.edit().putString(LANGUAGE_PREF_KEY, languageCode).apply()
|
|
+ }
|
|
+
|
|
+ fun getSavedLanguage(context: Context): String {
|
|
+ val prefs: SharedPreferences = context.getSharedPreferences("AppPrefs", Context.MODE_PRIVATE)
|
|
+ return prefs.getString(LANGUAGE_PREF_KEY, "en") ?: "en"
|
|
+ }
|
|
+}
|
|
\ No newline at end of file
|
|
Index: app/src/main/res/drawable/baseline_settings_24.xml
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/src/main/res/drawable/baseline_settings_24.xml b/app/src/main/res/drawable/baseline_settings_24.xml
|
|
new file mode 100644
|
|
--- /dev/null (date 1701410310346)
|
|
+++ b/app/src/main/res/drawable/baseline_settings_24.xml (date 1701410310346)
|
|
@@ -0,0 +1,5 @@
|
|
+<vector android:height="24dp" android:tint="#000000"
|
|
+ android:viewportHeight="24" android:viewportWidth="24"
|
|
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
|
+ <path android:fillColor="@android:color/white" android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/>
|
|
+</vector>
|
|
Index: app/build.gradle
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
<+>plugins {\r\n id 'com.android.application'\r\n id 'org.jetbrains.kotlin.android'\r\n id 'dagger.hilt.android.plugin'\r\n id 'com.google.gms.google-services'\r\n id 'androidx.navigation.safeargs.kotlin'\r\n id 'kotlin-kapt'\r\n id 'com.google.firebase.crashlytics'\r\n}\r\n\r\nandroid {\r\n namespace 'in.sminnovations.hposregistration'\r\n compileSdk 34\r\n\r\n defaultConfig {\r\n applicationId \"in.sminnovations.hposregistration\"\r\n minSdk 26\r\n targetSdk 34\r\n versionCode 1\r\n versionName \"1.0\"\r\n\r\n testInstrumentationRunner \"androidx.test.runner.AndroidJUnitRunner\"\r\n }\r\n\r\n buildTypes {\r\n release {\r\n minifyEnabled false\r\n proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\r\n }\r\n }\r\n compileOptions {\r\n sourceCompatibility JavaVersion.VERSION_17\r\n targetCompatibility JavaVersion.VERSION_17\r\n }\r\n buildFeatures {\r\n viewBinding true\r\n }\r\n kotlinOptions {\r\n jvmTarget = '17'\r\n }\r\n}\r\n\r\ndependencies {\r\n\r\n implementation 'androidx.core:core-ktx:1.10.1'\r\n implementation 'androidx.appcompat:appcompat:1.6.1'\r\n implementation 'com.google.android.material:material:1.9.0'\r\n implementation 'androidx.constraintlayout:constraintlayout:2.1.4'\r\n testImplementation 'junit:junit:4.13.2'\r\n androidTestImplementation 'androidx.test.ext:junit:1.1.5'\r\n androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'\r\n\r\n // firebase\r\n implementation(\"com.google.firebase:firebase-crashlytics-ktx\")\r\n implementation platform(\"com.google.firebase:firebase-bom:32.2.2\")\r\n implementation(\"com.google.firebase:firebase-analytics-ktx\")\r\n implementation 'com.google.firebase:firebase-firestore-ktx'\r\n implementation 'com.google.firebase:firebase-auth-ktx'\r\n implementation 'com.google.firebase:firebase-storage-ktx'\r\n implementation 'com.firebaseui:firebase-ui-firestore:8.0.2'\r\n implementation 'com.google.android.gms:play-services-auth:20.6.0'\r\n\r\n // Coroutines\r\n implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1'\r\n implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'\r\n\r\n // Coroutine Lifecycle Scopes\r\n implementation \"androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1\"\r\n implementation \"androidx.lifecycle:lifecycle-runtime-ktx:2.6.1\"\r\n\r\n //Dagger - Hilt\r\n implementation \"com.google.dagger:hilt-android:2.46\"\r\n kapt \"com.google.dagger:hilt-android-compiler:2.46\"\r\n kapt \"androidx.hilt:hilt-compiler:1.0.0\"\r\n\r\n // Navigation Component\r\n implementation \"androidx.navigation:navigation-fragment-ktx:2.7.0\"\r\n implementation \"androidx.navigation:navigation-ui-ktx:2.7.0\"\r\n\r\n // Retrofit + GSON\r\n implementation \"com.squareup.retrofit2:retrofit:2.9.0\"\r\n implementation \"com.squareup.retrofit2:converter-gson:2.9.0\"\r\n\r\n // Timber\r\n implementation 'com.jakewharton.timber:timber:4.7.1'\r\n\r\n // Activity KTX for viewModels()\r\n implementation \"androidx.activity:activity-ktx:1.7.2\"\r\n\r\n //image\r\n implementation 'com.github.bumptech.glide:glide:4.13.2'\r\n annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2'\r\n\r\n //Room\r\n implementation \"androidx.room:room-ktx:2.6.0-alpha03\"\r\n implementation \"androidx.room:room-runtime:2.6.0-alpha03\"\r\n kapt (\"androidx.room:room-compiler:2.6.0-alpha03\")\r\n\r\n // Barcode scanner\r\n implementation 'com.journeyapps:zxing-android-embedded:4.3.0'\r\n\r\n\r\n}
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
diff --git a/app/build.gradle b/app/build.gradle
|
|
--- a/app/build.gradle (revision 0e2dc2f306241d5abb7ca8378553cfc23896c4e1)
|
|
+++ b/app/build.gradle (date 1701443824088)
|
|
@@ -42,9 +42,9 @@
|
|
|
|
dependencies {
|
|
|
|
- implementation 'androidx.core:core-ktx:1.10.1'
|
|
+ implementation 'androidx.core:core-ktx:1.12.0'
|
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
- implementation 'com.google.android.material:material:1.9.0'
|
|
+ implementation 'com.google.android.material:material:1.10.0'
|
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
|
testImplementation 'junit:junit:4.13.2'
|
|
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
|
@@ -58,24 +58,24 @@
|
|
implementation 'com.google.firebase:firebase-auth-ktx'
|
|
implementation 'com.google.firebase:firebase-storage-ktx'
|
|
implementation 'com.firebaseui:firebase-ui-firestore:8.0.2'
|
|
- implementation 'com.google.android.gms:play-services-auth:20.6.0'
|
|
+ implementation 'com.google.android.gms:play-services-auth:20.7.0'
|
|
|
|
// Coroutines
|
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1'
|
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'
|
|
|
|
// Coroutine Lifecycle Scopes
|
|
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
|
|
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1"
|
|
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"
|
|
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.2"
|
|
|
|
//Dagger - Hilt
|
|
implementation "com.google.dagger:hilt-android:2.46"
|
|
kapt "com.google.dagger:hilt-android-compiler:2.46"
|
|
- kapt "androidx.hilt:hilt-compiler:1.0.0"
|
|
+ kapt "androidx.hilt:hilt-compiler:1.1.0"
|
|
|
|
// Navigation Component
|
|
- implementation "androidx.navigation:navigation-fragment-ktx:2.7.0"
|
|
- implementation "androidx.navigation:navigation-ui-ktx:2.7.0"
|
|
+ implementation "androidx.navigation:navigation-fragment-ktx:2.7.5"
|
|
+ implementation "androidx.navigation:navigation-ui-ktx:2.7.5"
|
|
|
|
// Retrofit + GSON
|
|
implementation "com.squareup.retrofit2:retrofit:2.9.0"
|
|
@@ -85,19 +85,20 @@
|
|
implementation 'com.jakewharton.timber:timber:4.7.1'
|
|
|
|
// Activity KTX for viewModels()
|
|
- implementation "androidx.activity:activity-ktx:1.7.2"
|
|
+ implementation "androidx.activity:activity-ktx:1.8.1"
|
|
|
|
//image
|
|
implementation 'com.github.bumptech.glide:glide:4.13.2'
|
|
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2'
|
|
|
|
//Room
|
|
- implementation "androidx.room:room-ktx:2.6.0-alpha03"
|
|
- implementation "androidx.room:room-runtime:2.6.0-alpha03"
|
|
- kapt ("androidx.room:room-compiler:2.6.0-alpha03")
|
|
+ implementation "androidx.room:room-ktx:2.6.0"
|
|
+ implementation "androidx.room:room-runtime:2.6.0"
|
|
+ kapt ("androidx.room:room-compiler:2.6.0")
|
|
|
|
// Barcode scanner
|
|
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
|
|
|
|
-
|
|
+ implementation 'androidx.preference:preference-ktx:1.2.1'
|
|
+ implementation 'androidx.preference:preference-ktx:1.2.1'
|
|
}
|
|
\ No newline at end of file
|