@@ -2,7 +2,6 @@ package org.wikipedia.edit
22
33import android.content.Context
44import android.content.Intent
5- import android.content.res.Configuration
65import android.graphics.Typeface
76import android.net.Uri
87import android.os.Bundle
@@ -51,15 +50,12 @@ import org.wikipedia.edit.preview.EditPreviewFragment
5150import org.wikipedia.edit.richtext.SyntaxHighlighter
5251import org.wikipedia.edit.summaries.EditSummaryFragment
5352import org.wikipedia.extensions.parcelableExtra
54- import org.wikipedia.history.HistoryEntry
5553import org.wikipedia.login.LoginActivity
5654import org.wikipedia.notifications.AnonymousNotificationHelper
5755import org.wikipedia.page.ExclusiveBottomSheetPresenter
5856import org.wikipedia.page.LinkMovementMethodExt
5957import org.wikipedia.page.Namespace
6058import org.wikipedia.page.PageTitle
61- import org.wikipedia.page.linkpreview.LinkPreviewDialog
62- import org.wikipedia.search.SearchActivity
6359import org.wikipedia.settings.Prefs
6460import org.wikipedia.suggestededits.SuggestedEditsImageRecsFragment
6561import org.wikipedia.theme.ThemeChooserDialog
@@ -104,14 +100,6 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback {
104100 private var actionMode: ActionMode ? = null
105101 private val disposables = CompositeDisposable ()
106102
107- private val requestLinkFromSearch = registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) {
108- if (it.resultCode == SearchActivity .RESULT_LINK_SUCCESS ) {
109- it.data?.parcelableExtra<PageTitle >(SearchActivity .EXTRA_RETURN_LINK_TITLE )?.let { title ->
110- binding.editKeyboardOverlay.insertLink(title, pageTitle.wikiSite.languageCode)
111- }
112- }
113- }
114-
115103 private val requestLogin = registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) {
116104 if (it.resultCode == LoginActivity .RESULT_LOGIN_SUCCESS ) {
117105 updateEditLicenseText()
@@ -149,8 +137,8 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback {
149137 binding.editSectionText.setText(newWikiText.first)
150138 intent.putExtra(InsertMediaActivity .EXTRA_INSERTED_INTO_INFOBOX , newWikiText.second)
151139
152- // TODO: automatically highlight what was added.
153- // binding.editSectionText.setSelection(cursorPos, cursorPos + newText.length )
140+ val insertPos = newWikiText.third
141+ binding.editSectionText.setSelection(insertPos.first, insertPos.first + insertPos.second )
154142
155143 if (invokeSource == Constants .InvokeSource .EDIT_ADD_IMAGE ) {
156144 // If we came from the Image Recommendation workflow, go directly to Preview.
@@ -179,55 +167,6 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback {
179167 UriUtil .visitInExternalBrowser(this , Uri .parse(UriUtil .resolveProtocolRelativeUrl(pageTitle.wikiSite, urlStr)))
180168 }
181169
182- private val syntaxButtonCallback = object : WikiTextKeyboardView .Callback {
183- override fun onPreviewLink (title : String ) {
184- val dialog = LinkPreviewDialog .newInstance(HistoryEntry (PageTitle (title, pageTitle.wikiSite), HistoryEntry .SOURCE_INTERNAL_LINK ), null )
185- ExclusiveBottomSheetPresenter .show(supportFragmentManager, dialog)
186- binding.root.post {
187- dialog.dialog?.setOnDismissListener {
188- if (! isDestroyed) {
189- binding.root.postDelayed({
190- DeviceUtil .showSoftKeyboard(binding.editSectionText)
191- }, 200 )
192- }
193- }
194- }
195- }
196-
197- override fun onRequestInsertMedia () {
198- requestInsertMedia.launch(InsertMediaActivity .newIntent(this @EditSectionActivity, pageTitle.wikiSite,
199- pageTitle.displayText, Constants .InvokeSource .EDIT_ACTIVITY ))
200- }
201-
202- override fun onRequestInsertLink () {
203- requestLinkFromSearch.launch(SearchActivity .newIntent(this @EditSectionActivity, Constants .InvokeSource .EDIT_ACTIVITY , null , true ))
204- }
205-
206- override fun onRequestHeading () {
207- if (binding.editKeyboardOverlayHeadings.isVisible) {
208- hideAllSyntaxModals()
209- return
210- }
211- hideAllSyntaxModals()
212- binding.editKeyboardOverlayHeadings.isVisible = true
213- binding.editKeyboardOverlay.onAfterHeadingsShown()
214- }
215-
216- override fun onRequestFormatting () {
217- if (binding.editKeyboardOverlayFormattingContainer.isVisible) {
218- hideAllSyntaxModals()
219- return
220- }
221- hideAllSyntaxModals()
222- binding.editKeyboardOverlayFormattingContainer.isVisible = true
223- binding.editKeyboardOverlay.onAfterFormattingShown()
224- }
225-
226- override fun onSyntaxOverlayCollapse () {
227- hideAllSyntaxModals()
228- }
229- }
230-
231170 public override fun onCreate (savedInstanceState : Bundle ? ) {
232171 super .onCreate(savedInstanceState)
233172 binding = ActivityEditSectionBinding .inflate(layoutInflater)
@@ -285,29 +224,14 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback {
285224 invalidateOptionsMenu()
286225 }
287226 }
288- binding.editKeyboardOverlay.editText = binding.editSectionText
289- binding.editKeyboardOverlay.callback = syntaxButtonCallback
290- binding.editKeyboardOverlayFormatting.editText = binding.editSectionText
291- binding.editKeyboardOverlayFormatting.callback = syntaxButtonCallback
292- binding.editKeyboardOverlayHeadings.editText = binding.editSectionText
293- binding.editKeyboardOverlayHeadings.callback = syntaxButtonCallback
227+
228+ SyntaxHighlightViewAdapter (this , pageTitle, binding.root, binding.editSectionText,
229+ binding.editKeyboardOverlay, binding.editKeyboardOverlayFormatting, binding.editKeyboardOverlayHeadings,
230+ Constants .InvokeSource .EDIT_ACTIVITY , requestInsertMedia)
294231
295232 binding.editSectionText.setOnClickListener { finishActionMode() }
296233 onEditingPrefsChanged()
297234
298- binding.editSectionContainer.viewTreeObserver.addOnGlobalLayoutListener {
299- binding.editSectionContainer.post {
300- if (! isDestroyed) {
301- if (isHardKeyboardAttached() || window.decorView.height - binding.editSectionContainer.height > DimenUtil .roundedDpToPx(150f )) {
302- binding.editKeyboardOverlayContainer.isVisible = true
303- } else {
304- hideAllSyntaxModals()
305- binding.editKeyboardOverlayContainer.isVisible = false
306- }
307- }
308- }
309- }
310-
311235 if (invokeSource == Constants .InvokeSource .EDIT_ADD_IMAGE ) {
312236 // If the intent is to add an image to the article, go directly to the image insertion flow.
313237 startInsertImageFlow()
@@ -316,7 +240,6 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback {
316240 // set focus to the EditText, but keep the keyboard hidden until the user changes the cursor location:
317241 binding.editSectionText.requestFocus()
318242 window.setSoftInputMode(WindowManager .LayoutParams .SOFT_INPUT_STATE_ALWAYS_HIDDEN )
319- hideAllSyntaxModals()
320243 }
321244
322245 public override fun onStart () {
@@ -332,12 +255,6 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback {
332255 super .onDestroy()
333256 }
334257
335- private fun isHardKeyboardAttached (): Boolean {
336- return (resources.configuration.hardKeyboardHidden == Configuration .KEYBOARDHIDDEN_NO &&
337- resources.configuration.keyboard != Configuration .KEYBOARD_UNDEFINED &&
338- resources.configuration.keyboard != Configuration .KEYBOARD_NOKEYS )
339- }
340-
341258 private fun updateEditLicenseText () {
342259 val editLicenseText = ActivityCompat .requireViewById<TextView >(this , R .id.licenseText)
343260 editLicenseText.text = StringUtil .fromHtml(getString(if (isLoggedIn) R .string.edit_save_action_license_logged_in else R .string.edit_save_action_license_anon,
@@ -771,7 +688,6 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback {
771688 scrollToHighlight(textToHighlight)
772689 binding.editSectionText.isEnabled = editingAllowed
773690 binding.editKeyboardOverlay.isVisible = editingAllowed
774- hideAllSyntaxModals()
775691 }
776692
777693 private fun scrollToHighlight (highlightText : String? ) {
@@ -781,12 +697,6 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback {
781697 binding.editSectionText.highlightText(highlightText)
782698 }
783699
784- private fun hideAllSyntaxModals () {
785- binding.editKeyboardOverlayHeadings.isVisible = false
786- binding.editKeyboardOverlayFormattingContainer.isVisible = false
787- binding.editKeyboardOverlay.onAfterOverlaysHidden()
788- }
789-
790700 fun showProgressBar (enable : Boolean ) {
791701 binding.viewProgressBar.isVisible = enable
792702 invalidateOptionsMenu()
0 commit comments