Created a three vertical dots icon and use it in the MerchantsFragment's Toolbar. Then forced that icon to display a custom Popup menu to control which pins will appear on the map (merchants and/or tellers).
This commit is contained in:
parent
285a4b6c49
commit
b9497a2db4
10 changed files with 108 additions and 14 deletions
|
@ -2,20 +2,21 @@ package cy.agorise.bitsybitshareswallet.fragments
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.fragment.app.Fragment
|
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.GoogleMap
|
||||||
import com.google.android.gms.maps.OnMapReadyCallback
|
import com.google.android.gms.maps.OnMapReadyCallback
|
||||||
import com.google.android.gms.maps.SupportMapFragment
|
import com.google.android.gms.maps.SupportMapFragment
|
||||||
|
|
||||||
import cy.agorise.bitsybitshareswallet.R
|
import cy.agorise.bitsybitshareswallet.R
|
||||||
import android.preference.PreferenceManager
|
import android.preference.PreferenceManager
|
||||||
|
import android.view.*
|
||||||
|
import android.widget.PopupWindow
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.appcompat.widget.Toolbar
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProviders
|
import androidx.lifecycle.ViewModelProviders
|
||||||
|
@ -58,7 +59,16 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback {
|
||||||
private var selectedMerchant: Merchant? = null
|
private var selectedMerchant: Merchant? = null
|
||||||
private var selectedTeller: Teller? = 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? {
|
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)
|
return inflater.inflate(R.layout.fragment_merchants, container, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,6 +80,36 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback {
|
||||||
mapFragment.getMapAsync(this)
|
mapFragment.getMapAsync(this)
|
||||||
|
|
||||||
mMerchantViewModel = ViewModelProviders.of(this).get(MerchantViewModel::class.java)
|
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 */
|
/** Handles the result from the location permission request */
|
||||||
|
|
5
app/src/main/res/drawable/ic_more_vert.xml
Normal file
5
app/src/main/res/drawable/ic_more_vert.xml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||||
|
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="#FF000000" android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
|
||||||
|
</vector>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||||
|
<corners android:radius="10dp" />
|
||||||
|
<solid android:color="?android:colorBackground" />
|
||||||
|
</shape>
|
|
@ -2,6 +2,7 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
@ -30,17 +31,17 @@
|
||||||
android:textAppearance="@style/TextAppearance.Bitsy.Subtitle1"
|
android:textAppearance="@style/TextAppearance.Bitsy.Subtitle1"
|
||||||
android:textStyle="bold"/>
|
android:textStyle="bold"/>
|
||||||
|
|
||||||
<Switch
|
<androidx.appcompat.widget.SwitchCompat
|
||||||
android:id="@+id/switchAutoClose"
|
android:id="@+id/switchAutoClose"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/spacing_different_topic"
|
android:layout_marginTop="@dimen/spacing_different_topic"
|
||||||
android:switchPadding="12dp"
|
app:switchPadding="12dp"
|
||||||
android:text="@string/msg__close_timer"
|
android:text="@string/msg__close_timer"
|
||||||
android:textAppearance="@style/TextAppearance.Bitsy.Body1"
|
android:textAppearance="@style/TextAppearance.Bitsy.Body1"
|
||||||
android:textColor="?android:textColorPrimary"/>
|
android:textColor="?android:textColorPrimary"/>
|
||||||
|
|
||||||
<Switch
|
<androidx.appcompat.widget.SwitchCompat
|
||||||
android:id="@+id/switchNightMode"
|
android:id="@+id/switchNightMode"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
39
app/src/main/res/layout/popup_menu_merchants.xml
Normal file
39
app/src/main/res/layout/popup_menu_merchants.xml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:background="@drawable/popup_menu_merchants_background">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.SwitchCompat
|
||||||
|
android:id="@+id/switchMerchants"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:switchPadding="48dp"
|
||||||
|
android:text="@string/title_merchants"
|
||||||
|
android:textAppearance="@style/TextAppearance.Bitsy.Body1"
|
||||||
|
android:textColor="?android:textColorPrimary"/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.SwitchCompat
|
||||||
|
android:id="@+id/switchTellers"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
app:switchPadding="48dp"
|
||||||
|
android:text="@string/title_tellers"
|
||||||
|
android:textAppearance="@style/TextAppearance.Bitsy.Body1"
|
||||||
|
android:textColor="?android:textColorPrimary"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvInfo"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:text="About"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:textAppearance="@style/TextAppearance.Bitsy.Body1"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
|
@ -11,7 +11,7 @@
|
||||||
<item
|
<item
|
||||||
android:id="@+id/merchants_dest"
|
android:id="@+id/merchants_dest"
|
||||||
android:icon="@drawable/ic_merchants"
|
android:icon="@drawable/ic_merchants"
|
||||||
android:title="@string/title_merchants"
|
android:title="@string/title_merchants_and_tellers"
|
||||||
app:showAsAction="always"/>
|
app:showAsAction="always"/>
|
||||||
|
|
||||||
<item
|
<item
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/menu_settings"
|
android:id="@+id/menu_filter"
|
||||||
android:icon="@drawable/ic_settings"
|
android:icon="@drawable/ic_more_vert"
|
||||||
android:title="@string/title_settings"
|
android:title="@string/title_filter"
|
||||||
app:showAsAction="never"/>
|
app:showAsAction="always"/>
|
||||||
|
|
||||||
</menu>
|
</menu>
|
|
@ -45,7 +45,7 @@
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/merchants_dest"
|
android:id="@+id/merchants_dest"
|
||||||
android:name="cy.agorise.bitsybitshareswallet.fragments.MerchantsFragment"
|
android:name="cy.agorise.bitsybitshareswallet.fragments.MerchantsFragment"
|
||||||
android:label="@string/title_merchants"
|
android:label="@string/title_merchants_and_tellers"
|
||||||
tools:layout="@layout/fragment_merchants"/>
|
tools:layout="@layout/fragment_merchants"/>
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
<!-- Home -->
|
<!-- Home -->
|
||||||
<string name="title_transactions">Transacciones</string>
|
<string name="title_transactions">Transacciones</string>
|
||||||
<string name="title_merchants">Comerciantes</string>
|
<string name="title_merchants_and_tellers">Comerciantes</string>
|
||||||
<string name="title_receive">Recibir</string>
|
<string name="title_receive">Recibir</string>
|
||||||
<string name="title_balances">Balances</string>
|
<string name="title_balances">Balances</string>
|
||||||
<string name="title_send">Enviar</string>
|
<string name="title_send">Enviar</string>
|
||||||
|
@ -59,6 +59,8 @@
|
||||||
<string name="button__filter">Filtrar</string>
|
<string name="button__filter">Filtrar</string>
|
||||||
|
|
||||||
<!-- Merchants & Tellers -->
|
<!-- Merchants & Tellers -->
|
||||||
|
<string name="title_merchants">Comerciantes</string>
|
||||||
|
<string name="title_tellers">Tellers</string>
|
||||||
<string name="msg__location_permission_necessary">El permiso de localización es necesario para mostrar tu ubicación actual en el mapa.</string>
|
<string name="msg__location_permission_necessary">El permiso de localización es necesario para mostrar tu ubicación actual en el mapa.</string>
|
||||||
|
|
||||||
<!-- Send Transaction -->
|
<!-- Send Transaction -->
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
<!-- Home -->
|
<!-- Home -->
|
||||||
<string name="title_transactions">Transactions</string>
|
<string name="title_transactions">Transactions</string>
|
||||||
<string name="title_merchants">Merchants & Tellers</string>
|
<string name="title_merchants_and_tellers">Merchants & Tellers</string>
|
||||||
<string name="title_receive">Receive</string>
|
<string name="title_receive">Receive</string>
|
||||||
<string name="title_balances">Balances</string>
|
<string name="title_balances">Balances</string>
|
||||||
<string name="title_send">Send</string>
|
<string name="title_send">Send</string>
|
||||||
|
@ -59,6 +59,8 @@
|
||||||
<string name="button__filter">Filter</string>
|
<string name="button__filter">Filter</string>
|
||||||
|
|
||||||
<!-- Merchants & Tellers -->
|
<!-- Merchants & Tellers -->
|
||||||
|
<string name="title_merchants">Merchants</string>
|
||||||
|
<string name="title_tellers">Tellers</string>
|
||||||
<string name="msg__location_permission_necessary">Location permission is necessary to show your current location on the map.</string>
|
<string name="msg__location_permission_necessary">Location permission is necessary to show your current location on the map.</string>
|
||||||
|
|
||||||
<!-- Send Transaction -->
|
<!-- Send Transaction -->
|
||||||
|
|
Loading…
Reference in a new issue