From c1a08e1e12dc72fad0c67a72d592bf23ccc2a909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96ppen?= Date: Sun, 16 Aug 2020 21:06:11 +0100 Subject: [PATCH] feedback on link click, and better perforance by only caching tabs on destroy --- .../main/java/oppen/tva/ui/GemtextAdapter.kt | 43 +++++-------------- app/src/main/java/oppen/tva/ui/TvaActivity.kt | 5 +++ .../main/java/oppen/tva/ui/TvaViewModel.kt | 5 ++- app/src/main/res/layout/gemtext_link.xml | 25 +++++------ 4 files changed, 28 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/oppen/tva/ui/GemtextAdapter.kt b/app/src/main/java/oppen/tva/ui/GemtextAdapter.kt index e8db9c0..c758e74 100644 --- a/app/src/main/java/oppen/tva/ui/GemtextAdapter.kt +++ b/app/src/main/java/oppen/tva/ui/GemtextAdapter.kt @@ -38,35 +38,13 @@ class GemtextAdapter(val onLink: (link: URI) -> Unit): RecyclerView.Adapter ViewHolder.Text( - LayoutInflater.from(parent.context).inflate(R.layout.gemtext_text, parent, false) - ) - typeH1 -> ViewHolder.H1( - LayoutInflater.from( - parent.context - ).inflate(R.layout.gemtext_h1, parent, false) - ) - typeH2 -> ViewHolder.H2( - LayoutInflater.from( - parent.context - ).inflate(R.layout.gemtext_h2, parent, false) - ) - typeH3 -> ViewHolder.H3( - LayoutInflater.from( - parent.context - ).inflate(R.layout.gemtext_h3, parent, false) - ) - typeListItem -> ViewHolder.ListItem( - LayoutInflater.from(parent.context).inflate(R.layout.gemtext_text, parent, false) - ) - typeLink -> ViewHolder.Link( - LayoutInflater.from(parent.context).inflate(R.layout.gemtext_link, parent, false) - ) - else -> ViewHolder.Text( - LayoutInflater.from( - parent.context - ).inflate(R.layout.gemtext_text, parent, false) - ) + typeText -> ViewHolder.Text(LayoutInflater.from(parent.context).inflate(R.layout.gemtext_text, parent, false)) + typeH1 -> ViewHolder.H1(LayoutInflater.from(parent.context).inflate(R.layout.gemtext_h1, parent, false)) + typeH2 -> ViewHolder.H2(LayoutInflater.from(parent.context).inflate(R.layout.gemtext_h2, parent, false)) + typeH3 -> ViewHolder.H3(LayoutInflater.from(parent.context).inflate(R.layout.gemtext_h3, parent, false)) + typeListItem -> ViewHolder.ListItem(LayoutInflater.from(parent.context).inflate(R.layout.gemtext_text, parent, false)) + typeLink -> ViewHolder.Link(LayoutInflater.from(parent.context).inflate(R.layout.gemtext_link, parent, false)) + else -> ViewHolder.Text(LayoutInflater.from(parent.context).inflate(R.layout.gemtext_text, parent, false)) } } @@ -94,16 +72,15 @@ class GemtextAdapter(val onLink: (link: URI) -> Unit): RecyclerView.Adapter holder.itemView.gemtext_text_textview.text = line.substring(4).trim() is ViewHolder.ListItem -> holder.itemView.gemtext_text_textview.text = "• ${line.substring(1)}".trim() is ViewHolder.Link -> { - println("Tva: link: $line") val linkParts = line.substring(2).trim().split("\\s+".toRegex(), 2) var linkName = linkParts[0] if(linkParts.size > 1) { linkName = linkParts[1] } val displayText = linkName - holder.itemView.gemtext_text_textview.text = displayText - holder.itemView.gemtext_text_textview.paint.isUnderlineText = true - holder.itemView.gemtext_link.setOnClickListener { + holder.itemView.gemtext_text_link.text = displayText + holder.itemView.gemtext_text_link.paint.isUnderlineText = true + holder.itemView.gemtext_text_link.setOnClickListener { val uri = getUri(lines[holder.adapterPosition]) println("User click link: $uri") onLink(uri) diff --git a/app/src/main/java/oppen/tva/ui/TvaActivity.kt b/app/src/main/java/oppen/tva/ui/TvaActivity.kt index 96b0d0a..e18749f 100644 --- a/app/src/main/java/oppen/tva/ui/TvaActivity.kt +++ b/app/src/main/java/oppen/tva/ui/TvaActivity.kt @@ -79,4 +79,9 @@ class TvaActivity : AppCompatActivity() { super.onBackPressed() } } + + override fun onDestroy() { + super.onDestroy() + model.persistTabState() + } } \ No newline at end of file diff --git a/app/src/main/java/oppen/tva/ui/TvaViewModel.kt b/app/src/main/java/oppen/tva/ui/TvaViewModel.kt index 6408df3..30409a3 100644 --- a/app/src/main/java/oppen/tva/ui/TvaViewModel.kt +++ b/app/src/main/java/oppen/tva/ui/TvaViewModel.kt @@ -53,7 +53,6 @@ class TvaViewModel: ViewModel() { private fun renderGemini(state: TvaState.GeminiResponse) { if(tabs[activeTab].history.isEmpty() || tabs[activeTab].history.last() != state.uri){ tabs[activeTab].add(state.uri) - cache.update(tabs, activeTab) } onState(state) @@ -78,7 +77,9 @@ class TvaViewModel: ViewModel() { } tabs[activeTab].history.removeLast() - cache.update(tabs, activeTab) request(previous) } + + + fun persistTabState() = cache.update(tabs, activeTab) } \ No newline at end of file diff --git a/app/src/main/res/layout/gemtext_link.xml b/app/src/main/res/layout/gemtext_link.xml index 6855c60..4ce08f5 100644 --- a/app/src/main/res/layout/gemtext_link.xml +++ b/app/src/main/res/layout/gemtext_link.xml @@ -1,18 +1,13 @@ - - - - \ No newline at end of file + android:focusable="true" + android:background="?android:attr/selectableItemBackground" + android:paddingLeft="@dimen/default_margin" + android:paddingRight="@dimen/default_margin" + android:textColor="#ffdede" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> \ No newline at end of file