diff --git a/app/src/main/java/oppen/tva/ui/TvaActivity.kt b/app/src/main/java/oppen/tva/ui/TvaActivity.kt index 18048ad..41b911d 100644 --- a/app/src/main/java/oppen/tva/ui/TvaActivity.kt +++ b/app/src/main/java/oppen/tva/ui/TvaActivity.kt @@ -1,5 +1,8 @@ package oppen.tva.ui +import android.R.attr.label +import android.content.ClipData +import android.content.ClipboardManager import android.content.Intent import android.net.Uri import android.os.Bundle @@ -8,11 +11,13 @@ import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.snackbar.Snackbar import oppen.alert import oppen.tva.R import oppen.tva.databinding.ActivityTvaBinding import oppen.tva.io.TvaState import oppen.tva.io.history.CacheInterface +import oppen.tva.ui.tabs.NewTabPopup import oppen.tva.ui.tabs.TabsDialog import oppen.visibleRetainingSpace @@ -28,7 +33,19 @@ class TvaActivity : AppCompatActivity() { R.id.link_menu_open_in_new_tab -> { model.newTab(uri) } - R.id.link_menu_copy -> "Not implemented yet".alert(this) + R.id.link_menu_copy -> { + val clipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText(getString(R.string.gemini_address), uri.toString()) + clipboard.setPrimaryClip(clip) + Snackbar.make(binding.root, getString(R.string.address_copied_to_clipboard), Snackbar.LENGTH_SHORT).setAction(R.string.share) { + Intent().apply { + action = Intent.ACTION_SEND + putExtra(Intent.EXTRA_TEXT, uri.toString()) + type = "text/plain" + startActivity(Intent.createChooser(this, null)) + } + }.show() + } } } }else{ diff --git a/app/src/main/java/oppen/tva/ui/overflow/OverflowPopup.kt b/app/src/main/java/oppen/tva/ui/overflow/OverflowPopup.kt new file mode 100644 index 0000000..bd0f29e --- /dev/null +++ b/app/src/main/java/oppen/tva/ui/overflow/OverflowPopup.kt @@ -0,0 +1,22 @@ +package oppen.tva.ui.overflow + +import android.view.MenuInflater +import android.view.View +import androidx.appcompat.widget.PopupMenu +import oppen.tva.R + +class OverflowPopup { + + fun show(view: View?, onMenuOption: (menuId: Int) -> Unit){ + if(view != null) { + val popup = PopupMenu(view.context, view) + val inflater: MenuInflater = popup.menuInflater + inflater.inflate(R.menu.overflow_menu, popup.menu) + popup.setOnMenuItemClickListener { menuItem -> + onMenuOption(menuItem.itemId) + true + } + popup.show() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/oppen/tva/ui/NewTabPopup.kt b/app/src/main/java/oppen/tva/ui/tabs/NewTabPopup.kt similarity index 95% rename from app/src/main/java/oppen/tva/ui/NewTabPopup.kt rename to app/src/main/java/oppen/tva/ui/tabs/NewTabPopup.kt index 2196dfe..3b33365 100644 --- a/app/src/main/java/oppen/tva/ui/NewTabPopup.kt +++ b/app/src/main/java/oppen/tva/ui/tabs/NewTabPopup.kt @@ -1,4 +1,4 @@ -package oppen.tva.ui +package oppen.tva.ui.tabs import android.view.MenuInflater import android.view.View diff --git a/app/src/main/res/menu/overflow_menu.xml b/app/src/main/res/menu/overflow_menu.xml new file mode 100644 index 0000000..dd2055b --- /dev/null +++ b/app/src/main/res/menu/overflow_menu.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f7385dc..3ac1d84 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,4 +3,8 @@ gemini:// Open in new tab Copy address + About + Link copied to clipboard + Gemini address + Share \ No newline at end of file