Skip to content

Commit

Permalink
Measure text on background
Browse files Browse the repository at this point in the history
Remove `setEmptyText` method from `EditorPlugin`
  • Loading branch information
massivemadness committed Feb 9, 2023
1 parent f1dcae3 commit 3e95f65
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ abstract class EditorPlugin(val pluginId: String) {
open fun setTextContent(text: CharSequence) = Unit
open fun setTextSize(size: Float) = Unit
open fun setTypeface(tf: Typeface?) = Unit
open fun setEmptyText() = Unit

open fun showDropDown() = Unit

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,13 +212,6 @@ open class TextProcessor @JvmOverloads constructor(
}
}

override fun clearText() {
super.clearText()
for (plugin in plugins) {
plugin.setEmptyText()
}
}

override fun showDropDown() {
super.showDropDown()
for (plugin in plugins) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ package com.blacksquircle.ui.editorkit.widget.internal
import android.content.Context
import android.util.AttributeSet
import androidx.core.text.PrecomputedTextCompat
import com.blacksquircle.ui.editorkit.R
import com.blacksquircle.ui.editorkit.model.TextChange
import com.blacksquircle.ui.editorkit.model.UndoStack
import com.blacksquircle.ui.editorkit.setSelectionIndex
Expand Down Expand Up @@ -80,11 +79,10 @@ abstract class UndoRedoEditText @JvmOverloads constructor(
onUndoRedoChangedListener?.onUndoRedoChanged()
}

open fun clearText() {
fun clearUndoHistory() {
undoStack.removeAll()
redoStack.removeAll()
onUndoRedoChangedListener?.onUndoRedoChanged()
setTextContent("")
}

fun canUndo(): Boolean = undoStack.canUndo()
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,12 @@ package com.blacksquircle.ui.feature.editor.ui.fragment
import android.os.Bundle
import android.view.KeyEvent
import android.view.View
import androidx.core.text.PrecomputedTextCompat
import androidx.core.view.doOnPreDraw
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import androidx.core.widget.TextViewCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.flowWithLifecycle
Expand Down Expand Up @@ -57,15 +60,16 @@ import com.blacksquircle.ui.feature.editor.data.utils.ToolbarManager
import com.blacksquircle.ui.feature.editor.databinding.FragmentEditorBinding
import com.blacksquircle.ui.feature.editor.ui.adapter.AutoCompleteAdapter
import com.blacksquircle.ui.feature.editor.ui.adapter.DocumentAdapter
import com.blacksquircle.ui.feature.editor.ui.adapter.TabItemAnimator
import com.blacksquircle.ui.feature.editor.ui.viewmodel.EditorIntent
import com.blacksquircle.ui.feature.editor.ui.viewmodel.EditorViewEvent
import com.blacksquircle.ui.feature.editor.ui.viewmodel.EditorViewModel
import com.blacksquircle.ui.feature.editor.ui.viewstate.DocumentViewState
import com.blacksquircle.ui.feature.editor.ui.viewstate.EditorViewState
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.withContext

@AndroidEntryPoint
class EditorFragment : Fragment(R.layout.fragment_editor),
Expand Down Expand Up @@ -105,7 +109,6 @@ class EditorFragment : Fragment(R.layout.fragment_editor),
toolbarManager.bind(binding)

binding.tabLayout.setHasFixedSize(true)
binding.tabLayout.itemAnimator = TabItemAnimator()
binding.tabLayout.adapter = DocumentAdapter(object : DocumentAdapter.TabInteractor {
override fun close(position: Int) {
viewModel.obtainEvent(EditorIntent.CloseTab(position, false))
Expand Down Expand Up @@ -180,6 +183,10 @@ class EditorFragment : Fragment(R.layout.fragment_editor),
.onEach { state ->
when (state) {
is DocumentViewState.Content -> {
val measurement = withContext(Dispatchers.Default) {
val textMetrics = TextViewCompat.getTextMetricsParams(binding.editor)
PrecomputedTextCompat.create(state.content.text, textMetrics)
}
binding.editor.isVisible = true
binding.scroller.isVisible = true
binding.keyboard.isVisible = state.showKeyboard
Expand All @@ -190,7 +197,7 @@ class EditorFragment : Fragment(R.layout.fragment_editor),
binding.editor.language = state.content.language
binding.editor.undoStack = state.content.undoStack
binding.editor.redoStack = state.content.redoStack
binding.editor.setTextContent(state.content.text)
binding.editor.setTextContent(measurement)
binding.editor.scrollX = state.content.documentModel.scrollX
binding.editor.scrollY = state.content.documentModel.scrollY
binding.editor.setSelectionRange(
Expand All @@ -200,24 +207,24 @@ class EditorFragment : Fragment(R.layout.fragment_editor),
binding.editor.doOnPreDraw(View::requestFocus)
}
is DocumentViewState.Error -> {
binding.editor.isVisible = false
binding.scroller.isVisible = false
binding.editor.isInvisible = true
binding.scroller.isInvisible = true
binding.keyboard.isVisible = false
binding.errorView.root.isVisible = true
binding.errorView.image.setImageResource(state.image)
binding.errorView.title.text = state.title
binding.errorView.subtitle.text = state.subtitle
binding.errorView.actionPrimary.isVisible = false
binding.loadingBar.isVisible = false
binding.editor.clearText()
binding.editor.clearUndoHistory()
}
is DocumentViewState.Loading -> {
binding.editor.isVisible = false
binding.scroller.isVisible = false
binding.editor.isInvisible = true
binding.scroller.isInvisible = true
binding.keyboard.isVisible = false
binding.errorView.root.isVisible = false
binding.loadingBar.isVisible = true
binding.editor.clearText()
binding.editor.clearUndoHistory()
}
}
}
Expand Down Expand Up @@ -392,6 +399,7 @@ class EditorFragment : Fragment(R.layout.fragment_editor),
// endregion TOOLBAR

private fun saveFile(local: Boolean = false) {
if (!binding.editor.isVisible) return
val action = EditorIntent.SaveFile(
local = local,
text = binding.editor.text.toString(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@
app:layout_constraintEnd_toEndOf="parent"
tools:visibility="gone" />

<com.google.android.material.progressindicator.CircularProgressIndicator
<ProgressBar
android:layout_width="64dp"
android:layout_height="64dp"
android:indeterminate="true"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
app:layout_constraintEnd_toEndOf="parent"
tools:visibility="gone" />

<com.google.android.material.progressindicator.CircularProgressIndicator
<ProgressBar
android:layout_width="64dp"
android:layout_height="64dp"
android:indeterminate="true"
Expand Down

0 comments on commit 3e95f65

Please sign in to comment.