Skip to content

Commit

Permalink
Update track/myshipment page and change nearby page to settings page
Browse files Browse the repository at this point in the history
  • Loading branch information
anugrahdev committed May 20, 2020
1 parent 92c28d2 commit ea16fe6
Show file tree
Hide file tree
Showing 40 changed files with 1,611 additions and 190 deletions.
4 changes: 3 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,9 @@ dependencies {
implementation 'com.jakewharton.threetenabp:threetenabp:1.0.3'

//Material dialog
implementation 'com.afollestad.material-dialogs:core:3.2.1'
implementation 'com.afollestad.material-dialogs:input:3.3.0'

implementation 'com.karumi:dexter:6.1.2'
implementation 'com.github.varunest:sparkbutton:1.0.6'

}
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<uses-sdk tools:overrideLibrary="com.google.zxing.client.android" />

<application

android:hardwareAccelerated="true"
android:allowBackup="true"
android:name=".MyApplication"
Expand All @@ -32,4 +33,5 @@
</activity>
</application>


</manifest>
4 changes: 2 additions & 2 deletions app/src/main/java/com/anugrahdev/app/ikurir/MyApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.anugrahdev.app.ikurir.data.network.ApiService
import com.anugrahdev.app.ikurir.data.repositories.CostRepository
import com.anugrahdev.app.ikurir.data.repositories.WaybillRepository
import com.anugrahdev.app.ikurir.ui.shipmentcost.CostViewModelFactory
import com.anugrahdev.app.ikurir.ui.trackwaybill.TrackWaybillViewModelFactory
import com.anugrahdev.app.ikurir.ui.trackwaybill.WaybillViewModelFactory
import com.jakewharton.threetenabp.AndroidThreeTen
import org.kodein.di.Kodein
import org.kodein.di.KodeinAware
Expand All @@ -24,7 +24,7 @@ class MyApplication: Application(), KodeinAware {
bind() from singleton { CostRepository(instance()) }
bind() from singleton { WaybillRepository(instance(),instance()) }
bind() from provider { CostViewModelFactory(instance()) }
bind() from provider { TrackWaybillViewModelFactory(instance()) }
bind() from provider { WaybillViewModelFactory(instance()) }

}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.anugrahdev.app.ikurir.adapter

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.anugrahdev.app.ikurir.ui.myshipment.DeliveredFragment
import com.anugrahdev.app.ikurir.ui.myshipment.OnProcessFragment

class MyPagerAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
override fun getItemCount(): Int {
return 2
}

override fun createFragment(position: Int): Fragment {
when(position){
0 -> return OnProcessFragment()
1 -> return DeliveredFragment()
}
return OnProcessFragment()
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package com.anugrahdev.app.ikurir.adapter

import android.os.Handler
import android.transition.AutoTransition
import android.transition.TransitionManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.AsyncListDiffer
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.anugrahdev.app.ikurir.R
import com.anugrahdev.app.ikurir.data.models.waybill.WaybillData
import com.anugrahdev.app.ikurir.databinding.ItemSavedawbBinding
import kotlinx.android.synthetic.main.item_savedawb.view.*

class MyShipmentAdapter(): RecyclerView.Adapter<MyShipmentAdapter.WaybillListViewHolder>() {

inner class WaybillListViewHolder(val item: ItemSavedawbBinding, viewType: Int):
RecyclerView.ViewHolder(item.root)

private val differCallback = object : DiffUtil.ItemCallback<WaybillData>(){
override fun areItemsTheSame(oldItem: WaybillData, newItem: WaybillData): Boolean {
return oldItem.waybillNumber == newItem.waybillNumber
}

override fun areContentsTheSame(oldItem: WaybillData, newItem: WaybillData): Boolean {
return oldItem == newItem
}
}

val differ = AsyncListDiffer(this, differCallback)


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WaybillListViewHolder {
return WaybillListViewHolder(
DataBindingUtil.inflate<ItemSavedawbBinding>(
LayoutInflater.from(parent.context),
R.layout.item_savedawb,
parent,
false), viewType)
}

override fun getItemCount(): Int = differ.currentList.size

override fun onBindViewHolder(holder: WaybillListViewHolder, position: Int) {
val waybill = differ.currentList[position]
holder.itemView.expand.setOnClickListener {
if (holder.itemView.expandableLayout.visibility == View.GONE) {
TransitionManager.beginDelayedTransition(holder.itemView.cv_savedawb, AutoTransition())
holder.itemView.expandableLayout.visibility = View.VISIBLE
holder.itemView.ic_expand.setImageResource(R.drawable.ic_arrow_drop_up)
} else {
Handler().postDelayed({
// TransitionManager.beginDelayedTransition(holder.itemView.cv_savedawb, AutoTransition())
holder.itemView.expandableLayout.visibility = View.GONE
holder.itemView.ic_expand.setImageResource(R.drawable.ic_arrow_drop_down)
},200)

}
}
holder.itemView.apply {
holder.item.waybill = waybill
when(waybill.courier.code){
"sicepat" -> ic_courier.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_sicepat))
"lion" -> ic_courier.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_lion))
"jnt" -> ic_courier.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_jnt))
"tiki" -> ic_courier.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_tiki))
}
setOnClickListener {
onItemClickListener?.let{ it(waybill) }
}
}
}

private var onItemClickListener: ((WaybillData)->Unit)? = null

fun setOnItemClickListener(listener : (WaybillData)->Unit){
onItemClickListener = listener
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package com.anugrahdev.app.ikurir.adapter

import android.os.Handler
import android.transition.AutoTransition
import android.transition.TransitionManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.AsyncListDiffer
import androidx.recyclerview.widget.DiffUtil
Expand All @@ -10,6 +15,13 @@ import com.anugrahdev.app.ikurir.R
import com.anugrahdev.app.ikurir.data.models.waybill.WaybillData
import com.anugrahdev.app.ikurir.databinding.ItemWaybilldetailBinding
import com.anugrahdev.app.ikurir.databinding.ItemWaybillhistoryBinding
import kotlinx.android.synthetic.main.item_savedawb.view.*
import kotlinx.android.synthetic.main.item_waybillhistory.view.*
import kotlinx.android.synthetic.main.item_waybillhistory.view.cv_savedawb
import kotlinx.android.synthetic.main.item_waybillhistory.view.expand
import kotlinx.android.synthetic.main.item_waybillhistory.view.expandableLayout
import kotlinx.android.synthetic.main.item_waybillhistory.view.ic_courier
import kotlinx.android.synthetic.main.item_waybillhistory.view.ic_expand

class WaybillAdapter():RecyclerView.Adapter<WaybillAdapter.WaybillListViewHolder>() {

Expand Down Expand Up @@ -41,8 +53,28 @@ class WaybillAdapter():RecyclerView.Adapter<WaybillAdapter.WaybillListViewHolder

override fun onBindViewHolder(holder: WaybillListViewHolder, position: Int) {
val waybill = differ.currentList[position]
holder.itemView.expand.setOnClickListener {
if (holder.itemView.expandableLayout.visibility == View.GONE) {
TransitionManager.beginDelayedTransition(holder.itemView.cv_savedawb, AutoTransition())
holder.itemView.expandableLayout.visibility = View.VISIBLE
holder.itemView.ic_expand.setImageResource(R.drawable.ic_arrow_drop_up)
} else {
Handler().postDelayed({
// TransitionManager.beginDelayedTransition(holder.itemView.cv_savedawb, AutoTransition())
holder.itemView.expandableLayout.visibility = View.GONE
holder.itemView.ic_expand.setImageResource(R.drawable.ic_arrow_drop_down)
},200)

}
}
holder.itemView.apply {
holder.item.waybill = waybill
when(waybill.courier.code){
"sicepat" -> ic_courier.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_sicepat))
"lion" -> ic_courier.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_lion))
"jnt" -> ic_courier.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_jnt))
"tiki" -> ic_courier.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_tiki))
}
setOnClickListener {
onItemClickListener?.let{ it(waybill) }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,13 @@ interface WaybillDataDao {
@Delete
suspend fun delete(waybilldata: WaybillData)

@Query("SELECT * FROM WaybillData WHERE type==:type")
fun getSavedWaybill(type:String): LiveData<List<WaybillData>>
@Query("SELECT * FROM WaybillData WHERE type=='history'")
fun getHistoryWaybill(): LiveData<List<WaybillData>>

@Query("SELECT * FROM WaybillData WHERE type=='saved' AND status_status==:status")
fun getSavedWaybill(status:String): LiveData<List<WaybillData>>

@Query("SELECT * FROM WaybillData WHERE type=='saved'")
fun getAllSavedWaybill(): LiveData<List<WaybillData>>

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ data class WaybillData constructor(
var waybillNumber: String = waybill_number
var type:String = "history"
var savedTime:String = ""
var waybillName = ""

constructor():this(
Courier(null,null),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ class WaybillRepository (private val api:ApiService, private val db:AppDatabase)

suspend fun upsert(waybillData: WaybillData) = db.getWaybillDao().upsert(waybillData)

fun getSavedWaybill() = db.getWaybillDao().getSavedWaybill("history")
fun getHistoryWaybill() = db.getWaybillDao().getHistoryWaybill()

fun getAllSavedWaybill() = db.getWaybillDao().getAllSavedWaybill()

fun getSavedWaybill(status:String) = db.getWaybillDao().getSavedWaybill(status)

suspend fun deleteSavedWaybill(waybillData: WaybillData) = db.getWaybillDao().delete(waybillData)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
package com.anugrahdev.app.ikurir.ui.home

import android.content.Intent
import android.os.Bundle
import android.view.KeyEvent
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.Navigation
import androidx.navigation.fragment.findNavController

import com.anugrahdev.app.ikurir.R
import com.anugrahdev.app.ikurir.utils.snackbar
import com.google.zxing.integration.android.IntentIntegrator
import kotlinx.android.synthetic.main.home_fragment.*
import java.util.*

Expand All @@ -16,6 +21,10 @@ import java.util.*
*/
class HomeFragment : Fragment() {

companion object {
fun newInstance() = HomeFragment()
}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
Expand All @@ -41,8 +50,50 @@ class HomeFragment : Fragment() {
tv_greet.text = "Selamat Malam"
}

iv_scan.setOnClickListener {
initScanner()
}

et_waybill.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_UP) {
//Perform Code
gotoTrack(et_waybill.text.toString())
return@OnKeyListener true
}
false
})

cv_cost.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_homeFragment_to_costFragment, null))
cv_track.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_homeFragment_to_trackWaybillFragment, null))
// cv_nearby.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_homeFragment_to_nearbyFragment, null))
cv_myshipment.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_homeFragment_to_myShipmentFragment, null))

}

private fun initScanner(){
val integrator = IntentIntegrator.forSupportFragment(this)
integrator.setOrientationLocked(false)
integrator.initiateScan()
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
val result =
IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
if (result!=null){
if (result.contents==null){
root_layout.snackbar("Cancelled")
}else{
gotoTrack(result.contents.toString())
}
}else{
super.onActivityResult(requestCode, resultCode, data)
}
}

private fun gotoTrack(wbNumber:String){
val bundle = Bundle().apply {
putString("waybillNumber", wbNumber)
}
findNavController().navigate(R.id.action_homeFragment_to_trackWaybillFragment,bundle)
}
}
Loading

0 comments on commit ea16fe6

Please sign in to comment.