This commit is contained in:
Öppen 2020-09-09 11:53:44 +01:00
parent 062a0cf469
commit cde8349654
5 changed files with 152 additions and 10 deletions

View File

@ -5,7 +5,7 @@ import android.app.Application
class Tva: Application() {
companion object{
const val DEFAULT_HOME_CAPSULE = "gemini://gemini.circumlunar.space/~oppen/tva/index.gmi"
const val DEFAULT_HOME_CAPSULE = "gemini://gemini.circumlunar.space/~oppen/gem/index.gmi"
const val GEMINI_USER_SEARCH_BASE = "gemini://gus.guru/search?"
const val GEMINI_BACKLINK_BASE = "gemini://gus.guru/backlinks?"
}

View File

@ -1,11 +1,20 @@
package oppen.tva.ui.modals_menus.overflow
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.text.SpannableStringBuilder
import android.text.style.ImageSpan
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.appcompat.widget.PopupMenu
import androidx.core.view.MenuCompat
import oppen.tva.R
object OverflowPopup {
fun show(view: View?, onMenuOption: (menuId: Int) -> Unit){
@ -18,7 +27,40 @@ object OverflowPopup {
true
}
MenuCompat.setGroupDividerEnabled(popup.menu, true)
insertMenuItemIcons(view.context, popup)
popup.show()
}
}
fun insertMenuItemIcons(context: Context, popupMenu: PopupMenu) {
val menu: Menu = popupMenu.menu
if (hasIcon(menu)) {
for (i in 0 until menu.size()) {
insertMenuItemIcon(context, menu.getItem(i))
}
}
}
private fun hasIcon(menu: Menu): Boolean {
for (i in 0 until menu.size()) {
if (menu.getItem(i).icon != null) return true
}
return false
}
/**
* Converts the given MenuItem's title into a Spannable containing both its icon and title.
*/
private fun insertMenuItemIcon(context: Context, menuItem: MenuItem) {
var icon: Drawable = menuItem.icon
if (icon == null) icon = ColorDrawable(Color.TRANSPARENT)
val iconSize = context.resources.getDimensionPixelSize(R.dimen.menu_item_icon_size)
icon.setBounds(0, 0, iconSize, iconSize)
icon.setTint(Color.WHITE)
val imageSpan = ImageSpan(icon)
val ssb = SpannableStringBuilder(" " + menuItem.title)
ssb.setSpan(imageSpan, 1, 2, 0)
menuItem.title = ssb
menuItem.icon = null
}
}

File diff suppressed because one or more lines are too long

View File

@ -10,4 +10,5 @@
<dimen name="h3_text_size">18sp</dimen>
<dimen name="button_size">32dp</dimen>
<dimen name="bar_height">50dp</dimen>
<dimen name="menu_item_icon_size">20dp</dimen>
</resources>

View File

@ -1,5 +1,5 @@
<resources>
<string name="app_name">Två</string>
<string name="app_name">Gem</string>
<string name="gemini_protocol">gemini://</string>
<string name="main_input_hint">Enter gemini:// address</string>
<string name="main_input_search_hint">Enter search term</string>
@ -9,8 +9,8 @@
<string name="gemini_address">Gemini address</string>
<string name="share">Share</string>
<string name="set_home">Set Home</string>
<string name="home_icon_attribution">Home icon by Creative Stall from the Noun Project</string>
<string name="about_body">Två: Gemini protocol client from Öppenlab</string>
<string name="home_icon_attribution">Home icon by Icongeek26 on FlatIcon.com</string>
<string name="about_body">Gem: Gemini protocol client from Öppenlab</string>
<string name="gnu_link">GPL v3</string>
<string name="copyright">Copyright © 2020 Öppenlab</string>
<string name="about_lic">GNU General Public License, version 3\n