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.