full screen dialog... for add bookmark

This commit is contained in:
Öppen 2020-09-10 17:33:10 +01:00
parent 4eebeba37b
commit 1a3fc1083a
12 changed files with 122 additions and 21 deletions

View File

@ -1,6 +1,22 @@
<component name="ProjectCodeStyleConfiguration"> <component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173"> <code_scheme name="Project" version="173">
<JetCodeStyleSettings> <JetCodeStyleSettings>
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
<value>
<package name="java.util" alias="false" withSubpackages="false" />
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
<package name="io.ktor" alias="false" withSubpackages="true" />
</value>
</option>
<option name="PACKAGES_IMPORT_LAYOUT">
<value>
<package name="" alias="false" withSubpackages="true" />
<package name="java" alias="false" withSubpackages="true" />
<package name="javax" alias="false" withSubpackages="true" />
<package name="kotlin" alias="false" withSubpackages="true" />
<package name="" alias="true" withSubpackages="true" />
</value>
</option>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings> </JetCodeStyleSettings>
<codeStyleSettings language="XML"> <codeStyleSettings language="XML">

View File

@ -6,7 +6,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application <application
android:name=".Tva" android:name=".Gem"
android:allowBackup="true" android:allowBackup="true"
android:icon="@drawable/vector_app_icon" android:icon="@drawable/vector_app_icon"
android:label="@string/app_name" android:label="@string/app_name"
@ -14,7 +14,7 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:networkSecurityConfig="@xml/network_security_config"> android:networkSecurityConfig="@xml/network_security_config">
<activity android:name=".ui.TvaActivity"> <activity android:name=".ui.GemActivity">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />

View File

@ -2,7 +2,7 @@ package oppen.tva
import android.app.Application import android.app.Application
class Tva: Application() { class Gem: Application() {
companion object{ companion object{
const val DEFAULT_HOME_CAPSULE = "gemini://gemini.circumlunar.space/~oppen/gem/index.gmi" const val DEFAULT_HOME_CAPSULE = "gemini://gemini.circumlunar.space/~oppen/gem/index.gmi"

View File

@ -9,13 +9,14 @@ import android.view.inputmethod.EditorInfo
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDialog
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import oppen.hideKeyboard import oppen.hideKeyboard
import oppen.tva.R import oppen.tva.R
import oppen.tva.Tva import oppen.tva.Gem
import oppen.tva.databinding.ActivityTvaBinding import oppen.tva.databinding.ActivityGemBinding
import oppen.tva.io.GemState import oppen.tva.io.GemState
import oppen.tva.io.bookmarks.BookmarksDatasource import oppen.tva.io.bookmarks.BookmarksDatasource
import oppen.tva.io.gemini.Datasource import oppen.tva.io.gemini.Datasource
@ -23,6 +24,7 @@ import oppen.tva.io.gemini.GeminiResponse
import oppen.tva.io.gemini.RuntimeCache import oppen.tva.io.gemini.RuntimeCache
import oppen.tva.io.history.uris.HistoryInterface import oppen.tva.io.history.uris.HistoryInterface
import oppen.tva.ui.audio_player.AudioPlayer 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_image.ImageDialog
import oppen.tva.ui.content_text.TextDialog import oppen.tva.ui.content_text.TextDialog
import oppen.tva.ui.modals_menus.about.AboutDialog import oppen.tva.ui.modals_menus.about.AboutDialog
@ -40,14 +42,14 @@ import java.net.URLEncoder
const val CREATE_IMAGE_FILE_REQ = 628 const val CREATE_IMAGE_FILE_REQ = 628
const val CREATE_AUDIO_FILE_REQ = 629 const val CREATE_AUDIO_FILE_REQ = 629
class TvaActivity : AppCompatActivity() { class GemActivity : AppCompatActivity() {
private var inSearch = false private var inSearch = false
private val mediaPlayer = MediaPlayer() private val mediaPlayer = MediaPlayer()
private val model by viewModels<TvaViewModel>() private val model by viewModels<GemViewModel>()
private lateinit var binding: ActivityTvaBinding private lateinit var binding: ActivityGemBinding
private lateinit var history: HistoryInterface private lateinit var history: HistoryInterface
private val adapter = GemtextAdapter { uri, longTap, view -> private val adapter = GemtextAdapter { uri, longTap, view ->
if(longTap){ if(longTap){
@ -75,7 +77,7 @@ class TvaActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_tva) binding = DataBindingUtil.setContentView(this, R.layout.activity_gem)
binding.viewmodel = model binding.viewmodel = model
binding.lifecycleOwner = this binding.lifecycleOwner = this
@ -117,7 +119,7 @@ class TvaActivity : AppCompatActivity() {
if(input.startsWith("gemini://")){ if(input.startsWith("gemini://")){
model.request(input) model.request(input)
}else{ }else{
model.request("${Tva.GEMINI_USER_SEARCH_BASE}${URLEncoder.encode(input, "UTF-8")}") model.request("${Gem.GEMINI_USER_SEARCH_BASE}${URLEncoder.encode(input, "UTF-8")}")
} }
binding.addressEdit.hideKeyboard() binding.addressEdit.hideKeyboard()
@ -138,14 +140,14 @@ class TvaActivity : AppCompatActivity() {
inSearch = true inSearch = true
} }
R.id.overflow_menu_bookmark -> { R.id.overflow_menu_bookmark -> {
//todo BookmarkDialog(this, "test", "test").show()
} }
R.id.overflow_menu_bookmarks -> { R.id.overflow_menu_bookmarks -> {
//todo //todo
} }
R.id.overflow_menu_backlinks -> { R.id.overflow_menu_backlinks -> {
val currentAddress = binding.addressEdit.text.toString() val currentAddress = binding.addressEdit.text.toString()
val backlinkAddress = "${Tva.GEMINI_BACKLINK_BASE}$currentAddress" val backlinkAddress = "${Gem.GEMINI_BACKLINK_BASE}$currentAddress"
model.request(backlinkAddress) model.request(backlinkAddress)
} }
R.id.overflow_menu_share -> { R.id.overflow_menu_share -> {
@ -175,7 +177,7 @@ class TvaActivity : AppCompatActivity() {
} }
binding.home.setOnClickListener { binding.home.setOnClickListener {
val prefs = getSharedPreferences("oppen.tva.ui.dialogs.set_home", Context.MODE_PRIVATE) val prefs = getSharedPreferences("oppen.tva.ui.dialogs.set_home", Context.MODE_PRIVATE)
val home = prefs.getString("home", Tva.DEFAULT_HOME_CAPSULE) val home = prefs.getString("home", Gem.DEFAULT_HOME_CAPSULE)
model.request(home!!) model.request(home!!)
} }
} }

View File

@ -1,13 +1,13 @@
package oppen.tva.ui package oppen.tva.ui
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import oppen.tva.Tva import oppen.tva.Gem
import oppen.tva.io.gemini.Datasource import oppen.tva.io.gemini.Datasource
import oppen.tva.io.GemState import oppen.tva.io.GemState
import oppen.tva.io.bookmarks.BookmarksDatasource import oppen.tva.io.bookmarks.BookmarksDatasource
import java.net.URI import java.net.URI
class TvaViewModel: ViewModel() { class GemViewModel: ViewModel() {
private lateinit var gemini: Datasource private lateinit var gemini: Datasource
private lateinit var bookmarks: BookmarksDatasource private lateinit var bookmarks: BookmarksDatasource
@ -20,7 +20,7 @@ class TvaViewModel: ViewModel() {
this.bookmarks = bookmarks this.bookmarks = bookmarks
this.onState = onState this.onState = onState
request(URI.create(Tva.DEFAULT_HOME_CAPSULE))//todo - regression: should check prefs... request(URI.create(Gem.DEFAULT_HOME_CAPSULE))//todo - regression: should check prefs...
onState(GemState.TabChange(1)) onState(GemState.TabChange(1))
} }
@ -44,7 +44,6 @@ class TvaViewModel: ViewModel() {
@ExperimentalStdlibApi @ExperimentalStdlibApi
fun goBack(){ fun goBack(){
when { when {
history.size >= 2 -> { history.size >= 2 -> {
logHistory() logHistory()
val previous = history[history.size - 2] val previous = history[history.size - 2]

View File

@ -7,14 +7,14 @@ import android.view.MenuInflater
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.core.view.MenuCompat import androidx.core.view.MenuCompat
import oppen.tva.R import oppen.tva.R
import oppen.tva.databinding.ActivityTvaBinding import oppen.tva.databinding.ActivityGemBinding
import oppen.tva.io.GemState import oppen.tva.io.GemState
import oppen.visible import oppen.visible
object AudioPlayer { object AudioPlayer {
fun play(context: Context, fun play(context: Context,
binding: ActivityTvaBinding, binding: ActivityGemBinding,
mediaPlayer: MediaPlayer, mediaPlayer: MediaPlayer,
state: GemState.ResponseAudio, state: GemState.ResponseAudio,
onSaveAudio: (state: GemState.ResponseAudio) -> Unit){ onSaveAudio: (state: GemState.ResponseAudio) -> Unit){

View File

@ -0,0 +1,30 @@
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)
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="1000"
/>

View File

@ -1,7 +1,7 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
<variable name="viewmodel" type="oppen.tva.ui.TvaViewModel" /> <variable name="viewmodel" type="oppen.tva.ui.GemViewModel" />
</data> </data>
<androidx.coordinatorlayout.widget.CoordinatorLayout <androidx.coordinatorlayout.widget.CoordinatorLayout
@ -9,7 +9,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
tools:context=".ui.TvaActivity"> tools:context=".ui.GemActivity">
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar" android:id="@+id/app_bar"

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.appcompat.widget.Toolbar
android:id="@+id/bookmark_toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
app:title="Add Bookmark"/>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/bookmark_toolbar"
android:padding="@dimen/default_margin_big"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/name" />
<androidx.appcompat.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/gemini_uri" />
<androidx.appcompat.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>

View File

@ -29,4 +29,6 @@
<string name="page_backlinks">Backlinks</string> <string name="page_backlinks">Backlinks</string>
<string name="add_bookmark">Add Bookmark</string> <string name="add_bookmark">Add Bookmark</string>
<string name="bookmarks">Bookmarks</string> <string name="bookmarks">Bookmarks</string>
<string name="name">Name</string>
<string name="gemini_uri">Gemini URL</string>
</resources> </resources>

View File

@ -10,6 +10,9 @@
<item name="android:windowLightStatusBar" tools:targetApi="m">true</item> <item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
</style> </style>
<style name="FSDialog" parent="@style/AppTheme">
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />