mirror of https://git.sr.ht/~oppen/ariane
rename main package, add bookmark dialog complete
This commit is contained in:
parent
1a3fc1083a
commit
38e3442cfd
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva
|
||||
package oppen.gem
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
@ -1,12 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="oppen.tva">
|
||||
package="oppen.gem">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
|
||||
<application
|
||||
android:name=".Gem"
|
||||
android:name="oppen.gem.Gem"
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/vector_app_icon"
|
||||
android:label="@string/app_name"
|
||||
|
@ -14,7 +14,7 @@
|
|||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:networkSecurityConfig="@xml/network_security_config">
|
||||
<activity android:name=".ui.GemActivity">
|
||||
<activity android:name="oppen.gem.ui.GemActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva
|
||||
package oppen.gem
|
||||
|
||||
import android.app.Application
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package oppen.tva.io
|
||||
package oppen.gem.io
|
||||
|
||||
import android.net.Uri
|
||||
import oppen.tva.io.gemini.GeminiResponse
|
||||
import oppen.gem.io.gemini.GeminiResponse
|
||||
import java.net.URI
|
||||
|
||||
sealed class GemState {
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.bookmarks
|
||||
package oppen.gem.io.bookmarks
|
||||
|
||||
import java.net.URI
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.bookmarks
|
||||
package oppen.gem.io.bookmarks
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.bookmarks
|
||||
package oppen.gem.io.bookmarks
|
||||
|
||||
import androidx.room.Database
|
||||
import androidx.room.RoomDatabase
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.bookmarks
|
||||
package oppen.gem.io.bookmarks
|
||||
|
||||
import androidx.room.*
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.bookmarks
|
||||
package oppen.gem.io.bookmarks
|
||||
|
||||
import android.content.Context
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.bookmarks
|
||||
package oppen.gem.io.bookmarks
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
|
@ -1,7 +1,7 @@
|
|||
package oppen.tva.io.gemini
|
||||
package oppen.gem.io.gemini
|
||||
|
||||
import android.content.Context
|
||||
import oppen.tva.io.GemState
|
||||
import oppen.gem.io.GemState
|
||||
import java.net.URI
|
||||
|
||||
interface Datasource {
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.gemini
|
||||
package oppen.gem.io.gemini
|
||||
|
||||
import java.security.cert.X509Certificate
|
||||
import javax.net.ssl.TrustManager
|
|
@ -1,10 +1,10 @@
|
|||
package oppen.tva.io.gemini
|
||||
package oppen.gem.io.gemini
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.net.toUri
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import oppen.tva.io.GemState
|
||||
import oppen.gem.io.GemState
|
||||
import java.io.*
|
||||
import java.net.ConnectException
|
||||
import java.net.URI
|
||||
|
@ -107,7 +107,7 @@ class GeminiDatasource(val context: Context): Datasource {
|
|||
|
||||
val factory: SSLSocketFactory = sslContext.socketFactory
|
||||
|
||||
var socket: SSLSocket? = null
|
||||
var socket: SSLSocket?
|
||||
try {
|
||||
socket = factory.createSocket(uri.host, port) as SSLSocket
|
||||
socket.enabledProtocols = arrayOf("TLSv1.2")
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.gemini
|
||||
package oppen.gem.io.gemini
|
||||
|
||||
object GeminiResponse {
|
||||
|
||||
|
@ -11,8 +11,8 @@ object GeminiResponse {
|
|||
const val UNKNOWN = -1
|
||||
|
||||
fun parseHeader(header: String): Header {
|
||||
var cleanHeader = header.replace("\\s+".toRegex(), " ")
|
||||
var meta = ""
|
||||
val cleanHeader = header.replace("\\s+".toRegex(), " ")
|
||||
val meta: String
|
||||
when {
|
||||
header.startsWith("2") -> {
|
||||
val segments = cleanHeader.trim().split(" ")
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.gemini
|
||||
package oppen.gem.io.gemini
|
||||
|
||||
import java.lang.StringBuilder
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.gemini
|
||||
package oppen.gem.io.gemini
|
||||
|
||||
import androidx.collection.LruCache
|
||||
import java.net.URI
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.history.uris
|
||||
package oppen.gem.io.history.uris
|
||||
|
||||
import android.content.Context
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.io.history.uris
|
||||
package oppen.gem.io.history.uris
|
||||
|
||||
import android.content.Context
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui
|
||||
package oppen.gem.ui
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
|
@ -9,30 +9,29 @@ import android.view.inputmethod.EditorInfo
|
|||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import oppen.gem.R
|
||||
import oppen.gem.Gem
|
||||
import oppen.gem.databinding.ActivityGemBinding
|
||||
import oppen.gem.io.GemState
|
||||
import oppen.gem.io.bookmarks.BookmarksDatasource
|
||||
import oppen.gem.io.gemini.Datasource
|
||||
import oppen.gem.io.gemini.GeminiResponse
|
||||
import oppen.gem.io.gemini.RuntimeCache
|
||||
import oppen.gem.io.history.uris.HistoryInterface
|
||||
import oppen.gem.ui.audio_player.AudioPlayer
|
||||
import oppen.gem.ui.bookmarks.BookmarkDialog
|
||||
import oppen.gem.ui.content_image.ImageDialog
|
||||
import oppen.gem.ui.content_text.TextDialog
|
||||
import oppen.gem.ui.modals_menus.about.AboutDialog
|
||||
import oppen.gem.ui.modals_menus.history.HistoryDialog
|
||||
import oppen.gem.ui.modals_menus.input.InputDialog
|
||||
import oppen.gem.ui.modals_menus.overflow.OverflowPopup
|
||||
import oppen.gem.ui.modals_menus.set_home.SetHomeDialog
|
||||
import oppen.gem.ui.modals_menus.LinkPopup
|
||||
import oppen.hideKeyboard
|
||||
import oppen.tva.R
|
||||
import oppen.tva.Gem
|
||||
import oppen.tva.databinding.ActivityGemBinding
|
||||
import oppen.tva.io.GemState
|
||||
import oppen.tva.io.bookmarks.BookmarksDatasource
|
||||
import oppen.tva.io.gemini.Datasource
|
||||
import oppen.tva.io.gemini.GeminiResponse
|
||||
import oppen.tva.io.gemini.RuntimeCache
|
||||
import oppen.tva.io.history.uris.HistoryInterface
|
||||
import oppen.tva.ui.audio_player.AudioPlayer
|
||||
import oppen.tva.ui.bookmarks.BookmarkDialog
|
||||
import oppen.tva.ui.content_image.ImageDialog
|
||||
import oppen.tva.ui.content_text.TextDialog
|
||||
import oppen.tva.ui.modals_menus.about.AboutDialog
|
||||
import oppen.tva.ui.modals_menus.history.HistoryDialog
|
||||
import oppen.tva.ui.modals_menus.input.InputDialog
|
||||
import oppen.tva.ui.modals_menus.overflow.OverflowPopup
|
||||
import oppen.tva.ui.modals_menus.set_home.SetHomeDialog
|
||||
import oppen.tva.ui.modals_menus.LinkPopup
|
||||
import oppen.visibleRetainingSpace
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
|
@ -48,6 +47,8 @@ class GemActivity : AppCompatActivity() {
|
|||
|
||||
private val mediaPlayer = MediaPlayer()
|
||||
|
||||
private lateinit var bookmarkDatasource: BookmarksDatasource
|
||||
|
||||
private val model by viewModels<GemViewModel>()
|
||||
private lateinit var binding: ActivityGemBinding
|
||||
private lateinit var history: HistoryInterface
|
||||
|
@ -77,6 +78,10 @@ class GemActivity : AppCompatActivity() {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
bookmarkDatasource = BookmarksDatasource.getDefault(applicationContext)
|
||||
|
||||
|
||||
binding = DataBindingUtil.setContentView(this, R.layout.activity_gem)
|
||||
binding.viewmodel = model
|
||||
binding.lifecycleOwner = this
|
||||
|
@ -140,7 +145,14 @@ class GemActivity : AppCompatActivity() {
|
|||
inSearch = true
|
||||
}
|
||||
R.id.overflow_menu_bookmark -> {
|
||||
BookmarkDialog(this, "test", "test").show()
|
||||
val name = adapter.inferTitle()
|
||||
BookmarkDialog(this, bookmarkDatasource, binding.addressEdit.text.toString(), name ?: ""){
|
||||
bookmarkDatasource.get { bookmarks ->
|
||||
bookmarks.forEach {bookmark ->
|
||||
println("Bookmark: ${bookmark.label}: ${bookmark.uri}")
|
||||
}
|
||||
}
|
||||
}.show()
|
||||
}
|
||||
R.id.overflow_menu_bookmarks -> {
|
||||
//todo
|
|
@ -1,10 +1,10 @@
|
|||
package oppen.tva.ui
|
||||
package oppen.gem.ui
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import oppen.tva.Gem
|
||||
import oppen.tva.io.gemini.Datasource
|
||||
import oppen.tva.io.GemState
|
||||
import oppen.tva.io.bookmarks.BookmarksDatasource
|
||||
import oppen.gem.Gem
|
||||
import oppen.gem.io.gemini.Datasource
|
||||
import oppen.gem.io.GemState
|
||||
import oppen.gem.io.bookmarks.BookmarksDatasource
|
||||
import java.net.URI
|
||||
|
||||
class GemViewModel: ViewModel() {
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui
|
||||
package oppen.gem.ui
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.view.LayoutInflater
|
||||
|
@ -8,7 +8,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
import kotlinx.android.synthetic.main.gemtext_code_block.view.*
|
||||
import kotlinx.android.synthetic.main.gemtext_link.view.*
|
||||
import kotlinx.android.synthetic.main.gemtext_text.view.gemtext_text_textview
|
||||
import oppen.tva.R
|
||||
import oppen.gem.R
|
||||
import java.net.URI
|
||||
|
||||
class GemtextAdapter(val onLink: (link: URI, longTap: Boolean, view: View?) -> Unit): RecyclerView.Adapter<GemtextAdapter.ViewHolder>() {
|
||||
|
@ -126,4 +126,12 @@ class GemtextAdapter(val onLink: (link: URI, longTap: Boolean, view: View?) -> U
|
|||
val linkParts = linkLine.substring(2).trim().split("\\s+".toRegex(), 2)
|
||||
return URI.create(linkParts.first())
|
||||
}
|
||||
|
||||
fun inferTitle(): String? {
|
||||
lines.forEach { line ->
|
||||
if(line.startsWith("#")) return line.replace("#", "").trim()
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui.audio_player
|
||||
package oppen.gem.ui.audio_player
|
||||
|
||||
import android.content.Context
|
||||
import android.media.MediaMetadataRetriever
|
||||
|
@ -6,9 +6,9 @@ import android.media.MediaPlayer
|
|||
import android.view.MenuInflater
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.core.view.MenuCompat
|
||||
import oppen.tva.R
|
||||
import oppen.tva.databinding.ActivityGemBinding
|
||||
import oppen.tva.io.GemState
|
||||
import oppen.gem.R
|
||||
import oppen.gem.databinding.ActivityGemBinding
|
||||
import oppen.gem.io.GemState
|
||||
import oppen.visible
|
||||
|
||||
object AudioPlayer {
|
||||
|
@ -32,7 +32,7 @@ object AudioPlayer {
|
|||
|
||||
binding.audioPlayButton.setImageResource(R.drawable.vector_pause)
|
||||
|
||||
mediaPlayer.setOnCompletionListener { player ->
|
||||
mediaPlayer.setOnCompletionListener { _ ->
|
||||
binding.audioPlayButton.setImageResource(R.drawable.vector_play)
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ object AudioPlayer {
|
|||
}
|
||||
}
|
||||
|
||||
mediaPlayer.setOnInfoListener { _, what, extra ->
|
||||
mediaPlayer.setOnInfoListener { _, what, _ ->
|
||||
when(what){
|
||||
MediaPlayer.MEDIA_INFO_UNKNOWN -> println("MEDIA_INFO_UNKNOWN")
|
||||
MediaPlayer.MEDIA_INFO_VIDEO_TRACK_LAGGING-> println("MEDIA_INFO_VIDEO_TRACK_LAGGING")
|
|
@ -0,0 +1,45 @@
|
|||
package oppen.gem.ui.bookmarks
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import kotlinx.android.synthetic.main.fragment_bookmark_dialog.view.*
|
||||
import oppen.gem.R
|
||||
import oppen.gem.io.bookmarks.Bookmark
|
||||
import oppen.gem.io.bookmarks.BookmarksDatasource
|
||||
import java.net.URI
|
||||
|
||||
|
||||
class BookmarkDialog(context: Context, val bookmarkDatasource: BookmarksDatasource, val uri: String, val name: String, onDismiss: () -> Unit): AppCompatDialog(context, R.style.FSDialog) {
|
||||
|
||||
init {
|
||||
val view = View.inflate(context, R.layout.fragment_bookmark_dialog, null)
|
||||
|
||||
setContentView(view)
|
||||
|
||||
view.bookmark_toolbar.setNavigationIcon(R.drawable.vector_close)
|
||||
view.bookmark_toolbar.setNavigationOnClickListener {
|
||||
onDismiss()
|
||||
dismiss()
|
||||
}
|
||||
|
||||
view.bookmark_name.setText(name)
|
||||
view.bookmark_uri.setText(uri)
|
||||
|
||||
view.bookmark_toolbar.inflateMenu(R.menu.add_bookmark)
|
||||
view.bookmark_toolbar.setOnMenuItemClickListener {menuItem ->
|
||||
if(menuItem.itemId == R.id.menu_action_save_bookmark){
|
||||
bookmarkDatasource.add(Bookmark(
|
||||
label = view.bookmark_name.text.toString(),
|
||||
uri = URI.create(view.bookmark_uri.text.toString())
|
||||
)){
|
||||
onDismiss()
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
true
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui.content_image
|
||||
package oppen.gem.ui.content_image
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
|
@ -8,8 +8,8 @@ import android.view.View
|
|||
import androidx.appcompat.app.AppCompatDialog
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import kotlinx.android.synthetic.main.dialog_content_image.view.*
|
||||
import oppen.tva.R
|
||||
import oppen.tva.io.GemState
|
||||
import oppen.gem.R
|
||||
import oppen.gem.io.GemState
|
||||
import java.io.FileOutputStream
|
||||
|
||||
object ImageDialog {
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui.content_image;
|
||||
package oppen.gem.ui.content_image;
|
||||
|
||||
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package oppen.tva.ui.content_text
|
||||
package oppen.gem.ui.content_text
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import kotlinx.android.synthetic.main.dialog_content_text.view.*
|
||||
import oppen.tva.R
|
||||
import oppen.tva.io.GemState
|
||||
import oppen.gem.R
|
||||
import oppen.gem.io.GemState
|
||||
|
||||
object TextDialog {
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package oppen.tva.ui.modals_menus
|
||||
package oppen.gem.ui.modals_menus
|
||||
|
||||
import android.view.MenuInflater
|
||||
import android.view.View
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import oppen.tva.R
|
||||
import oppen.gem.R
|
||||
|
||||
|
||||
object LinkPopup {
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui.modals_menus.about
|
||||
package oppen.gem.ui.modals_menus.about
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
|
@ -6,8 +6,8 @@ import android.net.Uri
|
|||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import kotlinx.android.synthetic.main.dialog_about.view.*
|
||||
import oppen.tva.BuildConfig
|
||||
import oppen.tva.R
|
||||
import oppen.gem.BuildConfig
|
||||
import oppen.gem.R
|
||||
|
||||
object AboutDialog {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui.modals_menus.history
|
||||
package oppen.gem.ui.modals_menus.history
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
|
@ -6,7 +6,7 @@ import android.view.ViewGroup
|
|||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kotlinx.android.synthetic.main.row_history.view.*
|
||||
import oppen.delay
|
||||
import oppen.tva.R
|
||||
import oppen.gem.R
|
||||
|
||||
class HistoryAdapter(val history: List<String>, val onClick:(address: String) -> Unit): RecyclerView.Adapter<HistoryAdapter.ViewHolder>() {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui.modals_menus.history
|
||||
package oppen.gem.ui.modals_menus.history
|
||||
|
||||
import android.content.Context
|
||||
import android.view.MenuInflater
|
||||
|
@ -10,9 +10,9 @@ import androidx.core.view.MenuCompat
|
|||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import kotlinx.android.synthetic.main.dialog_about.view.close_tab_dialog
|
||||
import kotlinx.android.synthetic.main.dialog_history.view.*
|
||||
import oppen.tva.R
|
||||
import oppen.tva.io.gemini.RuntimeCache
|
||||
import oppen.tva.io.history.uris.HistoryInterface
|
||||
import oppen.gem.R
|
||||
import oppen.gem.io.gemini.RuntimeCache
|
||||
import oppen.gem.io.history.uris.HistoryInterface
|
||||
|
||||
object HistoryDialog {
|
||||
fun show(context: Context, onHistoryItem: (address: String) -> Unit){
|
|
@ -1,11 +1,11 @@
|
|||
package oppen.tva.ui.modals_menus.input
|
||||
package oppen.gem.ui.modals_menus.input
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import kotlinx.android.synthetic.main.dialog_input_query.view.*
|
||||
import oppen.tva.R
|
||||
import oppen.tva.io.GemState
|
||||
import oppen.gem.R
|
||||
import oppen.gem.io.GemState
|
||||
import java.net.URLEncoder
|
||||
|
||||
object InputDialog {
|
|
@ -1,4 +1,4 @@
|
|||
package oppen.tva.ui.modals_menus.overflow
|
||||
package oppen.gem.ui.modals_menus.overflow
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
|
@ -12,7 +12,7 @@ import android.view.MenuItem
|
|||
import android.view.View
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.core.view.MenuCompat
|
||||
import oppen.tva.R
|
||||
import oppen.gem.R
|
||||
|
||||
|
||||
object OverflowPopup {
|
||||
|
@ -27,7 +27,7 @@ object OverflowPopup {
|
|||
true
|
||||
}
|
||||
MenuCompat.setGroupDividerEnabled(popup.menu, true)
|
||||
insertMenuItemIcons(view.context, popup)
|
||||
//insertMenuItemIcons(view.context, popup)
|
||||
popup.show()
|
||||
}
|
||||
}
|
||||
|
@ -53,7 +53,6 @@ object OverflowPopup {
|
|||
*/
|
||||
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)
|
|
@ -1,10 +1,10 @@
|
|||
package oppen.tva.ui.modals_menus.set_home
|
||||
package oppen.gem.ui.modals_menus.set_home
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import kotlinx.android.synthetic.main.dialog_set_home.view.*
|
||||
import oppen.tva.R
|
||||
import oppen.gem.R
|
||||
|
||||
object SetHomeDialog {
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
package oppen.tva.ui.bookmarks
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import kotlinx.android.synthetic.main.fragment_bookmark_dialog.view.*
|
||||
import oppen.tva.R
|
||||
|
||||
|
||||
class BookmarkDialog(context: Context, val uri: String, val name: String): AppCompatDialog(context, R.style.FSDialog) {
|
||||
|
||||
init {
|
||||
setContentView(R.layout.fragment_bookmark_dialog)
|
||||
//getWindow()?.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
}
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
|
||||
</vector>
|
|
@ -1,25 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24.5dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="49"
|
||||
android:tint="@color/stroke">
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:pathData="M47.723,19.3306L24.481,0.1701C24.3393,0.0567 24.1692,0 24.0086,0C23.8385,0 23.6685,0.0567 23.5362,0.1701L11.5845,10.0054V0.7464C11.5845,0.3307 11.2444,0 10.8381,0C10.4318,0 10.0917,0.3401 10.0917,0.7464V11.2431L0.2753,19.3306C-0.046,19.5951 -0.0932,20.0675 0.1713,20.3887C0.4359,20.71 0.9083,20.7572 1.2295,20.4927L4.2056,18.0456V45.0007C4.2056,46.6541 5.5472,48.0052 7.2101,48.0052H40.8071C42.4605,48.0052 43.8115,46.6635 43.8115,45.0007V18.0362L46.7877,20.4832C46.9294,20.5966 47.0994,20.6533 47.2601,20.6533C47.4774,20.6533 47.6947,20.5588 47.8364,20.3793C48.0915,20.0675 48.0442,19.5951 47.723,19.3306ZM35.2422,46.4935H25.2652V34.0977H35.2422V46.4935ZM42.2999,45.0007C42.2999,45.8321 41.6291,46.5029 40.7976,46.5029H36.7445V33.3419C36.7445,32.9262 36.4043,32.5955 35.9981,32.5955H24.5188C24.1031,32.5955 23.7724,32.9356 23.7724,33.3419V46.4935H7.2006C6.3692,46.4935 5.6984,45.8227 5.6984,44.9913V16.7985L23.9991,1.7195L42.2999,16.7985V45.0007Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M10.8381,34.6646C10.4224,34.6646 10.0917,35.0047 10.0917,35.411V36.6581C10.0917,37.0738 10.4319,37.4045 10.8381,37.4045C11.2444,37.4045 11.5845,37.0644 11.5845,36.6581V35.411C11.5845,34.9953 11.2538,34.6646 10.8381,34.6646Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M10.8381,38.8029C10.4224,38.8029 10.0917,39.143 10.0917,39.5492V40.7964C10.0917,41.2121 10.4319,41.5428 10.8381,41.5428C11.2444,41.5428 11.5845,41.2026 11.5845,40.7964V39.5492C11.5845,39.143 11.2538,38.8029 10.8381,38.8029Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M17.2249,34.6646C16.8092,34.6646 16.4785,35.0047 16.4785,35.411V36.6581C16.4785,37.0738 16.8187,37.4045 17.2249,37.4045C17.6312,37.4045 17.9713,37.0644 17.9713,36.6581V35.411C17.9808,34.9953 17.6406,34.6646 17.2249,34.6646Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M17.2249,38.8029C16.8092,38.8029 16.4785,39.143 16.4785,39.5492V40.7964C16.4785,41.2121 16.8187,41.5428 17.2249,41.5428C17.6312,41.5428 17.9713,41.2026 17.9713,40.7964V39.5492C17.9808,39.143 17.6406,38.8029 17.2249,38.8029Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M17.2722,16.3072C17.2722,20.0203 20.2861,23.0342 23.9991,23.0342C27.7122,23.0342 30.7261,20.0203 30.7261,16.3072C30.7261,12.5942 27.7122,9.5803 23.9991,9.5803C20.2861,9.5803 17.2722,12.5942 17.2722,16.3072ZM29.2239,16.3072C29.2239,19.1889 26.8808,21.5319 23.9991,21.5319C21.1175,21.5319 18.7744,19.1889 18.7744,16.3072C18.7744,13.4256 21.1175,11.0825 23.9991,11.0825C26.8808,11.0825 29.2239,13.4256 29.2239,16.3072Z"
|
||||
android:fillColor="#000000"/>
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M10,19v-5h4v5c0,0.55 0.45,1 1,1h3c0.55,0 1,-0.45 1,-1v-7h1.7c0.46,0 0.68,-0.57 0.33,-0.87L12.67,3.6c-0.38,-0.34 -0.96,-0.34 -1.34,0l-8.36,7.53c-0.34,0.3 -0.13,0.87 0.33,0.87H5v7c0,0.55 0.45,1 1,1h3c0.55,0 1,-0.45 1,-1z"/>
|
||||
</vector>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<data>
|
||||
<variable name="viewmodel" type="oppen.tva.ui.GemViewModel" />
|
||||
<variable name="viewmodel" type="oppen.gem.ui.GemViewModel" />
|
||||
</data>
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
android:layout_height="match_parent"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<oppen.tva.ui.content_image.TouchImageView
|
||||
<oppen.gem.ui.content_image.TouchImageView
|
||||
android:id="@+id/image_view"
|
||||
android:scaleType="centerInside"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/bookmark_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?actionBarSize"
|
||||
android:layout_marginTop="@dimen/default_margin"
|
||||
android:layout_height="@dimen/bar_height"
|
||||
app:title="Add Bookmark"/>
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
|
@ -23,8 +24,11 @@
|
|||
android:text="@string/name" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
android:id="@+id/bookmark_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"
|
||||
android:lines="1"
|
||||
android:maxLines="1"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
|
@ -33,8 +37,11 @@
|
|||
android:text="@string/gemini_uri" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
android:id="@+id/bookmark_uri"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textUri"
|
||||
android:lines="1"
|
||||
android:maxLines="1"/>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item android:id="@+id/menu_action_save_bookmark"
|
||||
android:title="Save Bookmark"
|
||||
android:icon="@drawable/vector_confirm"
|
||||
app:showAsAction="always"/>
|
||||
</menu>
|
|
@ -1,6 +1,6 @@
|
|||
package oppen.tva.io
|
||||
package oppen.gem.io
|
||||
|
||||
import oppen.tva.io.gemini.GemtextHelper
|
||||
import oppen.gem.io.gemini.GemtextHelper
|
||||
import org.junit.Test
|
||||
|
||||
import org.junit.Assert.*
|
Loading…
Reference in New Issue