Skip to content

Commit f749d3b

Browse files
authored
Merge pull request #1095 from wordpress-mobile/feature/compose-placeholders
Compose placeholders
2 parents 806c3a4 + b7768e3 commit f749d3b

File tree

9 files changed

+1272
-570
lines changed

9 files changed

+1272
-570
lines changed

aztec/src/main/kotlin/org/wordpress/aztec/AztecText.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import android.text.style.SuggestionSpan
4646
import android.util.AttributeSet
4747
import android.util.DisplayMetrics
4848
import android.util.TypedValue
49+
import android.view.DragEvent
4950
import android.view.KeyEvent
5051
import android.view.LayoutInflater
5152
import android.view.MotionEvent
@@ -254,6 +255,7 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
254255
private var onVideoInfoRequestedListener: OnVideoInfoRequestedListener? = null
255256
private var onAztecKeyListener: OnAztecKeyListener? = null
256257
private var onVisibilityChangeListener: OnVisibilityChangeListener? = null
258+
private var dragEventManager: DragEventManager? = null
257259
var externalLogger: AztecLog.ExternalLogger? = null
258260

259261
private var isViewInitialized = false
@@ -356,6 +358,19 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
356358
fun beforeMediaDeleted(attrs: AztecAttributes) {}
357359
}
358360

361+
interface DragEventManager {
362+
fun shouldProcessDragEvent(event: DragEvent?): Boolean
363+
}
364+
365+
override fun onDragEvent(event: DragEvent?): Boolean {
366+
val shouldProcessDragEvent = dragEventManager?.shouldProcessDragEvent(event)
367+
if (shouldProcessDragEvent == true) {
368+
return super.onDragEvent(event)
369+
} else {
370+
return false
371+
}
372+
}
373+
359374
/**
360375
* Listens to keyboard events and calls the `shouldOverrideBackSpace` before each backspace event.
361376
*/
@@ -1209,6 +1224,10 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
12091224
this.onVisibilityChangeListener = listener
12101225
}
12111226

1227+
fun setDragEventManager(listener: DragEventManager) {
1228+
this.dragEventManager = listener
1229+
}
1230+
12121231
override fun onKeyPreIme(keyCode: Int, event: KeyEvent): Boolean {
12131232
if (event.keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
12141233
onImeBackListener?.onImeBack()

media-placeholders/build.gradle

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ android {
3232
includeAndroidResources = true
3333
}
3434
}
35+
buildFeatures {
36+
compose true
37+
}
38+
composeOptions {
39+
kotlinCompilerExtensionVersion = "1.5.14"
40+
}
3541
}
3642

3743
dependencies {
@@ -41,6 +47,10 @@ dependencies {
4147
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinCoroutinesVersion"
4248
testImplementation "junit:junit:$jUnitVersion"
4349
testImplementation "org.robolectric:robolectric:$robolectricVersion"
50+
implementation 'androidx.compose.material3:material3:1.3.1'
51+
implementation 'androidx.compose.foundation:foundation:1.7.5'
52+
implementation 'androidx.compose.ui:ui:1.7.5'
53+
implementation 'androidx.compose.ui:ui-tooling-preview:1.7.5'
4454
}
4555

4656
dependencyAnalysis {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.wordpress.aztec.placeholders
2+
3+
import androidx.compose.runtime.Composable
4+
import org.wordpress.aztec.AztecAttributes
5+
6+
interface ComposePlaceholderAdapter : PlaceholderManager.PlaceholderAdapter {
7+
/**
8+
* Use this method to draw the placeholder using Jetpack Compose.
9+
* @param placeholderUuid the placeholder UUID
10+
* @param attrs aztec attributes of the view
11+
*/
12+
@Composable
13+
fun Placeholder(
14+
placeholderUuid: String,
15+
attrs: AztecAttributes,
16+
)
17+
}

0 commit comments

Comments
 (0)