diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/MerchantsFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/MerchantsFragment.kt index c3452b8..cc453a6 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/MerchantsFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/MerchantsFragment.kt @@ -2,20 +2,21 @@ package cy.agorise.bitsybitshareswallet.fragments import android.Manifest import android.annotation.SuppressLint +import android.content.Context import android.content.pm.PackageManager import android.os.Bundle import android.util.Log import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import com.google.android.gms.maps.GoogleMap import com.google.android.gms.maps.OnMapReadyCallback import com.google.android.gms.maps.SupportMapFragment import cy.agorise.bitsybitshareswallet.R import android.preference.PreferenceManager +import android.view.* +import android.widget.PopupWindow import android.widget.TextView +import androidx.appcompat.widget.Toolbar import androidx.core.content.ContextCompat import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders @@ -58,7 +59,16 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback { private var selectedMerchant: Merchant? = null private var selectedTeller: Teller? = null + private var mPopupWindow: PopupWindow? = null + private var mToolbar: Toolbar? = null + private var screenWidth: Int = 0 + private var popupWindowWidth: Int = 0 + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + setHasOptionsMenu(true) + + mToolbar = activity?.findViewById(R.id.toolbar) + return inflater.inflate(R.layout.fragment_merchants, container, false) } @@ -70,6 +80,36 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback { mapFragment.getMapAsync(this) mMerchantViewModel = ViewModelProviders.of(this).get(MerchantViewModel::class.java) + + setupPopupWindow() + + // Gets the screen width to correctly place the merchants and tellers popup menu + val display = activity?.windowManager?.defaultDisplay + screenWidth = display?.width ?: screenWidth + } + + private fun setupPopupWindow() { + val popupView = layoutInflater?.inflate(R.layout.popup_menu_merchants, null) + + // TODO get references to the popup menu items + + mPopupWindow = PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) + popupWindowWidth = mPopupWindow?.width ?: popupWindowWidth + } + + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflate(R.menu.menu_merchants, menu) + } + + override fun onOptionsItemSelected(item: MenuItem?): Boolean { + if (item?.itemId == R.id.menu_filter) { + if (mPopupWindow?.isShowing == false) + mPopupWindow?.showAsDropDown(mToolbar, screenWidth - popupWindowWidth, 0) + else + mPopupWindow?.dismiss() + return true + } + return super.onOptionsItemSelected(item) } /** Handles the result from the location permission request */ diff --git a/app/src/main/res/drawable/ic_more_vert.xml b/app/src/main/res/drawable/ic_more_vert.xml new file mode 100644 index 0000000..c097d3e --- /dev/null +++ b/app/src/main/res/drawable/ic_more_vert.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/popup_menu_merchants_background.xml b/app/src/main/res/drawable/popup_menu_merchants_background.xml new file mode 100644 index 0000000..620897d --- /dev/null +++ b/app/src/main/res/drawable/popup_menu_merchants_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 29ba248..e9fb4c9 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -2,6 +2,7 @@ - - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_home.xml b/app/src/main/res/menu/menu_home.xml index f9d5c72..ece2682 100644 --- a/app/src/main/res/menu/menu_home.xml +++ b/app/src/main/res/menu/menu_home.xml @@ -11,7 +11,7 @@ + android:id="@+id/menu_filter" + android:icon="@drawable/ic_more_vert" + android:title="@string/title_filter" + app:showAsAction="always"/> \ No newline at end of file diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index aa1bb35..e5dd9d0 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -45,7 +45,7 @@ Transacciones - Comerciantes + Comerciantes Recibir Balances Enviar @@ -59,6 +59,8 @@ Filtrar + Comerciantes + Tellers El permiso de localizaciĆ³n es necesario para mostrar tu ubicaciĆ³n actual en el mapa. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d343952..8b4eed1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,7 +36,7 @@ Transactions - Merchants & Tellers + Merchants & Tellers Receive Balances Send @@ -59,6 +59,8 @@ Filter + Merchants + Tellers Location permission is necessary to show your current location on the map.