diff --git a/.idea/misc.xml b/.idea/misc.xml
index 5701082..5a3ddd2 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,10 +1,17 @@
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/steve_md/smartmkulima/adapter/CropCycleTaskListAdapter.kt b/app/src/main/java/com/steve_md/smartmkulima/adapter/CropCycleTaskListAdapter.kt
index c229623..b9bcd9f 100644
--- a/app/src/main/java/com/steve_md/smartmkulima/adapter/CropCycleTaskListAdapter.kt
+++ b/app/src/main/java/com/steve_md/smartmkulima/adapter/CropCycleTaskListAdapter.kt
@@ -34,6 +34,7 @@ class CropCycleTaskListAdapter(private val onClickListener: OnClickListener) :
binding.farmID.text = cycle?.farmId
binding.cycleData.text = cycle?.cropName
binding.dateForCycle.text = cycle?.startDate
+ binding.textView85.text = cycle?.type
}
}
diff --git a/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/main/HireFarmEquipmentsFragment.kt b/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/main/HireFarmEquipmentsFragment.kt
index 3d93867..79dbb3d 100644
--- a/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/main/HireFarmEquipmentsFragment.kt
+++ b/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/main/HireFarmEquipmentsFragment.kt
@@ -28,6 +28,7 @@ class HireFarmEquipmentsFragment : Fragment() {
private lateinit var binding: FragmentHireFarmEquipmentsBinding
private lateinit var farmEquipmentsRecylerView: RecyclerView
private lateinit var farmEquipmentsAdapter: FarmEquipmentAdapter
+ private var farmEquipmentsList = ArrayList()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
@@ -72,11 +73,11 @@ class HireFarmEquipmentsFragment : Fragment() {
val farmEquipments = response.body()
- val newList = ArrayList()
+ farmEquipments?.let {
+ farmEquipmentsList.addAll(it)
+ farmEquipmentsAdapter.submitList(farmEquipmentsList)
+ }
- newList.addAll(farmEquipments!!)
-
- farmEquipmentsAdapter.submitList(newList)
farmEquipmentsAdapter.notifyDataSetChanged()
farmEquipmentsRecylerView.adapter = farmEquipmentsAdapter
farmEquipmentsRecylerView.visibility = View.VISIBLE
@@ -93,5 +94,18 @@ class HireFarmEquipmentsFragment : Fragment() {
binding.imageViewBackFromFarmEquipments.setOnClickListener {
findNavController().navigateUp()
}
+
+ // performing filtering of farm equipments here
+ binding.card1.setOnClickListener {
+ filterFarmEquipments("F")
+ }
+ binding.card2.setOnClickListener { filterFarmEquipments("W") }
+ binding.card3.setOnClickListener { filterFarmEquipments("J") }
+ binding.card4.setOnClickListener { filterFarmEquipments("P") }
+ }
+
+ private fun filterFarmEquipments(query: String) {
+ val filteredList = farmEquipmentsList.filter { it.name.contains(query, ignoreCase = true) }
+ farmEquipmentsAdapter.submitList(filteredList.toMutableList())
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/AutoCreateCropCycleFragment.kt b/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/AutoCreateCropCycleFragment.kt
index def0644..60d9bf5 100644
--- a/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/AutoCreateCropCycleFragment.kt
+++ b/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/AutoCreateCropCycleFragment.kt
@@ -1,6 +1,7 @@
package com.steve_md.smartmkulima.ui.fragments.others.crop_cycle
import android.annotation.SuppressLint
+import android.app.AlertDialog
import android.app.DatePickerDialog
import android.os.Bundle
import android.util.Log
@@ -29,7 +30,6 @@ class AutoCreateCropCycleFragment : Fragment() {
private lateinit var binding: FragmentAutoCreateCropCycleBinding
private var cropCycleStartDay: Calendar? = null
- private val db = FirebaseFirestore.getInstance()
private val cycleTypes by lazy { resources.getStringArray(R.array.cycle_types) }
@@ -57,9 +57,7 @@ class AutoCreateCropCycleFragment : Fragment() {
private fun setUpBinding() {
binding.viewAllCycleTypes.setOnClickListener {
- findNavController().navigate(
- R.id.action_autoCreateCropCycleFragment_to_cropCycleTasksListFragment
- )
+ goToCropCycle()
}
val cycleTypeAdapter =
@@ -78,15 +76,14 @@ class AutoCreateCropCycleFragment : Fragment() {
val selectedCycleType = cycleTypes[position]
if (selectedCycleType == "Crop Cycle") {
populateCropSpinner()
- } else if (selectedCycleType == "Service Cycle"){
+ } else if (selectedCycleType == "Service Cycle") {
binding.spinnerCrop.visibility = View.GONE
//displayServiceCycleTasks()
binding.stepLinearLayout.removeAllViews()
val stepTextView = TextView(requireContext())
stepTextView.text = "$cropCycleStartDay | ${binding.enterFarmBlockID.text}"
- }
- else {
+ } else {
return
}
}
@@ -118,6 +115,13 @@ class AutoCreateCropCycleFragment : Fragment() {
}
+ private fun goToCropCycle() {
+ findNavController().navigate(
+ R.id.action_autoCreateCropCycleFragment_to_cropCycleTasksListFragment
+ )
+ }
+
+ @SuppressLint("SetTextI18n")
private fun displayPredefinedServiceCycle() {
binding.stepLinearLayout.removeAllViews()
val steps = listOf(
@@ -131,10 +135,12 @@ class AutoCreateCropCycleFragment : Fragment() {
steps.forEach { step ->
val stepTextView = TextView(requireContext())
// Set text with step name and details
- stepTextView.text = "${step.name}: Start Day ${cropCycleStartDay?.time}, End Day ${step.endDay} \n"
+ stepTextView.text =
+ "${step.name}: Start Day ${cropCycleStartDay?.time}, End Day ${step.endDay} \n"
binding.stepLinearLayout.addView(stepTextView)
}
}
+
data class Step(val name: String, val startDay: Int, val endDay: Int)
private fun generateCropCycle() {
@@ -148,7 +154,6 @@ class AutoCreateCropCycleFragment : Fragment() {
val startDay = dateFormat.parse(startDayForCropCycle)
-
// Sample crop cycle stages
val stages = listOf(
"Seedling Acquisition",
diff --git a/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/CropCycleTasksListFragment.kt b/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/CropCycleTasksListFragment.kt
index 536aa07..f2e96b6 100644
--- a/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/CropCycleTasksListFragment.kt
+++ b/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/CropCycleTasksListFragment.kt
@@ -1,6 +1,8 @@
package com.steve_md.smartmkulima.ui.fragments.others.crop_cycle
import android.annotation.SuppressLint
+import android.content.res.ColorStateList
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -11,6 +13,7 @@ import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.FirebaseFirestore
+import com.steve_md.smartmkulima.R
import com.steve_md.smartmkulima.adapter.CropCycleTaskListAdapter
import com.steve_md.smartmkulima.data.remote.CyclesApiClient
import com.steve_md.smartmkulima.data.remote.FarmEquipmentsApiClient
@@ -24,10 +27,12 @@ import retrofit2.Call
import retrofit2.Response
import timber.log.Timber
import java.net.HttpURLConnection
+import java.util.logging.Handler
class CropCycleTasksListFragment : Fragment() {
private lateinit var binding: FragmentCropCycleListBinding
private lateinit var cycleListAdapter: CropCycleTaskListAdapter
+ private var cycleList = ArrayList()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -44,8 +49,6 @@ class CropCycleTasksListFragment : Fragment() {
(activity as AppCompatActivity).supportActionBar?.hide()
-
-
setUpBinding()
setUpRecyclerView()
getAllAvailableCropCycle()
@@ -69,15 +72,33 @@ class CropCycleTasksListFragment : Fragment() {
binding.cropCycleRecyclerView.adapter = cycleListAdapter
}
+ @SuppressLint("ResourceAsColor")
private fun setUpBinding() {
binding.imageViewBackFromCropCycleLists.setOnClickListener { findNavController().navigateUp() }
+
+ binding.textView74.setOnClickListener {
+ // binding.cropCycleRecyclerView.removeAllViews()
+ android.os.Handler().postDelayed({
+ binding.progressBarCycles.visibility = View.GONE
+// getAllAvailableCropCycle()
+ }, 1500)
+ }
+
+ binding.textView83CropCycle.setOnClickListener {
+ filterCycles("Crop cycle")
+ }
+ binding.textView84.setOnClickListener {
+
+ filterCycles("Livestock cycle")
+ }
+
}
// Fetch from remote API (web-service)
private fun getAllAvailableCropCycle() {
CyclesApiClient.api.getAllFarmCycles()
.enqueue(object : retrofit2.Callback> {
- @SuppressLint("NotifyDataSetChanged")
+ @SuppressLint("NotifyDataSetChanged", "ResourceAsColor")
override fun onResponse(
call: Call>,
response: Response>
@@ -85,25 +106,31 @@ class CropCycleTasksListFragment : Fragment() {
if (response.isSuccessful) {
Timber.i("====Viewing Farm cycles${response.body()}=====")
- displaySnackBar("Viewing Available cycles")
+ // displaySnackBar("Viewing Available cycles")
val cycles = response.body()
- val newList = ArrayList()
-
- newList.addAll(cycles!!)
- cycleListAdapter.submitList(newList)
+ cycles?.let {
+ cycleList.addAll(it)
+ cycleListAdapter.submitList(cycleList)
+ }
cycleListAdapter.notifyDataSetChanged()
binding.cropCycleRecyclerView.adapter = cycleListAdapter
binding.cropCycleRecyclerView.visibility = View.VISIBLE
+
}
}
override fun onFailure(call: Call>, t: Throwable) {
- toast("nothing here.${t.localizedMessage}")
+ Timber.e("nothing here.${t.localizedMessage}")
binding.errorNotAvailable.visibility = View.VISIBLE
binding.cropCycleRecyclerView.visibility = View.INVISIBLE
}
})
}
+
+ private fun filterCycles(s: String) {
+ val filteredList = cycleList.filter { it.type.equals(s, ignoreCase = true) }
+ cycleListAdapter.submitList(filteredList.toMutableList())
+ }
}
diff --git a/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/LivestockCycleFragment.kt b/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/LivestockCycleFragment.kt
new file mode 100644
index 0000000..663b703
--- /dev/null
+++ b/app/src/main/java/com/steve_md/smartmkulima/ui/fragments/others/crop_cycle/LivestockCycleFragment.kt
@@ -0,0 +1,25 @@
+package com.steve_md.smartmkulima.ui.fragments.others.crop_cycle
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.steve_md.smartmkulima.R
+import com.steve_md.smartmkulima.databinding.FragmentLivestockCycleBinding
+
+class LivestockCycleFragment : Fragment() {
+ private lateinit var binding: FragmentLivestockCycleBinding
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ binding = FragmentLivestockCycleBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/crop_cycle_task_row.xml b/app/src/main/res/layout/crop_cycle_task_row.xml
index a233fc3..351b7b8 100644
--- a/app/src/main/res/layout/crop_cycle_task_row.xml
+++ b/app/src/main/res/layout/crop_cycle_task_row.xml
@@ -66,6 +66,17 @@
app:layout_constraintStart_toEndOf="@+id/cycleData"
app:layout_constraintTop_toTopOf="@+id/cycleData" />
+
+
diff --git a/app/src/main/res/layout/fragment_auto_create_crop_cycle.xml b/app/src/main/res/layout/fragment_auto_create_crop_cycle.xml
index 5af8c22..b36b908 100644
--- a/app/src/main/res/layout/fragment_auto_create_crop_cycle.xml
+++ b/app/src/main/res/layout/fragment_auto_create_crop_cycle.xml
@@ -60,11 +60,11 @@
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
-
android:entries="@array/cycle_types"
android:paddingHorizontal="12dp"
android:paddingVertical="8dp"
android:spinnerMode="dropdown"
+ android:background="@drawable/rounded_corner"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
diff --git a/app/src/main/res/layout/fragment_crop_cycle_list.xml b/app/src/main/res/layout/fragment_crop_cycle_list.xml
index c24ff16..4fab4cb 100644
--- a/app/src/main/res/layout/fragment_crop_cycle_list.xml
+++ b/app/src/main/res/layout/fragment_crop_cycle_list.xml
@@ -5,6 +5,7 @@
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/bg_gray"
+ android:fitsSystemWindows="true"
tools:context=".ui.fragments.others.crop_cycle.CropCycleTasksListFragment">
+ app:layout_constraintTop_toBottomOf="@+id/linearLayoutCropCycleList"
+ app:layout_constraintVertical_bias="0.883"
+ tools:listitem="@layout/crop_cycle_task_row" />
@@ -75,4 +78,62 @@
app:layout_constraintTop_toTopOf="@+id/cropCycleRecyclerView" />
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_detailed_farm_cycle.xml b/app/src/main/res/layout/fragment_detailed_farm_cycle.xml
index 434930a..003aae2 100644
--- a/app/src/main/res/layout/fragment_detailed_farm_cycle.xml
+++ b/app/src/main/res/layout/fragment_detailed_farm_cycle.xml
@@ -67,19 +67,9 @@
app:layout_constraintTop_toBottomOf="@+id/textView78"
tools:listitem="@layout/detail_cycle_row" />
-
+ android:layout_marginStart="24dp"
+ app:layout_constraintTop_toBottomOf="@+id/viewSeparator"
+ app:layout_constraintStart_toStartOf="parent" />
diff --git a/app/src/main/res/layout/fragment_hire_farm_equipments.xml b/app/src/main/res/layout/fragment_hire_farm_equipments.xml
index 1483dc8..b6d7a44 100644
--- a/app/src/main/res/layout/fragment_hire_farm_equipments.xml
+++ b/app/src/main/res/layout/fragment_hire_farm_equipments.xml
@@ -44,9 +44,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
- android:layout_marginTop="22dp"
+ android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
- android:fontFamily="@font/montserrat"
+ android:textStyle="bold"
+ android:fontFamily="@font/montserrat_medium"
android:text="Find services available to hire"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/layout/fragment_livestock_cycle.xml b/app/src/main/res/layout/fragment_livestock_cycle.xml
new file mode 100644
index 0000000..d6899a7
--- /dev/null
+++ b/app/src/main/res/layout/fragment_livestock_cycle.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_new_farming_technology.xml b/app/src/main/res/layout/fragment_new_farming_technology.xml
index ab6e7cf..15754d3 100644
--- a/app/src/main/res/layout/fragment_new_farming_technology.xml
+++ b/app/src/main/res/layout/fragment_new_farming_technology.xml
@@ -45,7 +45,7 @@
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginStart="60dp"
- android:layout_marginTop="100dp"
+ android:layout_marginTop="80dp"
android:backgroundTint="@color/main"
app:cardCornerRadius="20dp"
app:layout_constraintStart_toStartOf="parent"
@@ -83,7 +83,7 @@
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginStart="70dp"
- android:layout_marginTop="100dp"
+ android:layout_marginTop="80dp"
android:backgroundTint="@color/main"
app:cardCornerRadius="20dp"
app:layout_constraintEnd_toEndOf="parent"
@@ -199,7 +199,7 @@
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginStart="20dp"
- android:layout_marginTop="100dp"
+ android:layout_marginTop="80dp"
android:backgroundTint="@color/main"
app:cardCornerRadius="20dp"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/navigation/navigation_graph.xml b/app/src/main/res/navigation/navigation_graph.xml
index 5b531f4..c424b00 100644
--- a/app/src/main/res/navigation/navigation_graph.xml
+++ b/app/src/main/res/navigation/navigation_graph.xml
@@ -412,6 +412,9 @@
+
SPRING
+
+ - Filter by:
+ - Crops
+ - Livestocks
+
+
- Seedling Acquisition
- Media Acquisition