1818 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1919 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2020 * SOFTWARE.
21- *
21+ *
2222 */
2323
24- package dji.ux.beta.hardwareaccessory .widget.rtk
24+ package dji.ux.beta.accessory .widget.rtk
2525
2626import android.annotation.SuppressLint
2727import android.content.Context
@@ -39,17 +39,17 @@ import dji.thirdparty.io.reactivex.Flowable
3939import dji.thirdparty.io.reactivex.disposables.Disposable
4040import dji.thirdparty.io.reactivex.functions.Consumer
4141import dji.thirdparty.io.reactivex.processors.PublishProcessor
42- import dji.ux.beta.core.base.ConstraintLayoutWidget
42+ import dji.ux.beta.accessory.R
43+ import dji.ux.beta.accessory.widget.rtk.RTKEnabledWidget.ModelState
44+ import dji.ux.beta.accessory.widget.rtk.RTKEnabledWidget.ModelState.ProductConnected
45+ import dji.ux.beta.accessory.widget.rtk.RTKEnabledWidget.ModelState.RTKEnabledUpdated
46+ import dji.ux.beta.accessory.widget.rtk.RTKEnabledWidget.UIState.SwitchChanged
4347import dji.ux.beta.core.base.DJISDKModel
4448import dji.ux.beta.core.base.SchedulerProvider
45- import dji.ux.beta.core.base.uxsdkkeys.ObservableInMemoryKeyedStore
49+ import dji.ux.beta.core.base.widget.ConstraintLayoutWidget
50+ import dji.ux.beta.core.communication.ObservableInMemoryKeyedStore
4651import dji.ux.beta.core.extension.*
4752import dji.ux.beta.core.util.DisplayUtil
48- import dji.ux.beta.hardwareaccessory.R
49- import dji.ux.beta.hardwareaccessory.widget.rtk.RTKEnabledWidget.RTKEnabledWidgetState
50- import dji.ux.beta.hardwareaccessory.widget.rtk.RTKEnabledWidget.RTKEnabledWidgetState.ProductConnected
51- import dji.ux.beta.hardwareaccessory.widget.rtk.RTKEnabledWidget.RTKEnabledWidgetState.RTKEnabledUpdate
52- import dji.ux.beta.hardwareaccessory.widget.rtk.RTKEnabledWidget.RTKEnabledWidgetUIState.RTKEnabledSwitchCheckChanged
5353
5454private const val TAG = " RTKEnabledWidget"
5555
@@ -60,19 +60,18 @@ open class RTKEnabledWidget @JvmOverloads constructor(
6060 context : Context ,
6161 attrs : AttributeSet ? = null ,
6262 defStyleAttr : Int = 0
63- ) : ConstraintLayoutWidget<RTKEnabledWidgetState >(context, attrs, defStyleAttr), CompoundButton.OnCheckedChangeListener {
63+ ) : ConstraintLayoutWidget<ModelState >(context, attrs, defStyleAttr), CompoundButton.OnCheckedChangeListener {
6464
6565 // region Fields
6666 private val rtkTitleTextView: TextView = findViewById(R .id.textview_rtk_title)
6767 private val rtkEnabledSwitch: Switch = findViewById(R .id.switch_rtk_enabled)
6868 private val rtkEnabledDescriptionTextView: TextView = findViewById(R .id.textview_rtk_enabled_description)
69- private val uiUpdateStateProcessor: PublishProcessor <RTKEnabledWidgetUIState > = PublishProcessor .create()
69+ private val uiUpdateStateProcessor: PublishProcessor <UIState > = PublishProcessor .create()
7070
7171 private val widgetModel by lazy {
7272 RTKEnabledWidgetModel (
7373 DJISDKModel .getInstance(),
74- ObservableInMemoryKeyedStore .getInstance(),
75- SchedulerProvider .getInstance())
74+ ObservableInMemoryKeyedStore .getInstance())
7675 }
7776
7877 /* *
@@ -169,7 +168,7 @@ open class RTKEnabledWidget @JvmOverloads constructor(
169168 }
170169 // endregion
171170
172- // region Constructors
171+ // region Constructor
173172 override fun initView (context : Context , attrs : AttributeSet ? , defStyleAttr : Int ) {
174173 inflate(context, R .layout.uxsdk_widget_rtk_enabled, this )
175174 }
@@ -197,7 +196,7 @@ open class RTKEnabledWidget @JvmOverloads constructor(
197196
198197 override fun onCheckedChanged (buttonView : CompoundButton ? , isChecked : Boolean ) {
199198 addDisposable(widgetModel.canEnableRTK.firstOrError()
200- .observeOn(SchedulerProvider .getInstance(). ui())
199+ .observeOn(SchedulerProvider .ui())
201200 .subscribe(Consumer { canEnableRTK: Boolean ->
202201 if (! canEnableRTK) {
203202 setRTKSwitch(! isChecked)
@@ -206,29 +205,29 @@ open class RTKEnabledWidget @JvmOverloads constructor(
206205 setRTKEnabled(isChecked)
207206 }
208207 }, logErrorConsumer(TAG , " canEnableRTK: " )))
209- uiUpdateStateProcessor.onNext(RTKEnabledSwitchCheckChanged (isChecked))
208+ uiUpdateStateProcessor.onNext(SwitchChanged (isChecked))
210209 }
211210
212211 override fun reactToModelChanges () {
213212 addReaction(widgetModel.rtkEnabled
214- .observeOn(SchedulerProvider .getInstance(). ui())
213+ .observeOn(SchedulerProvider .ui())
215214 .subscribe { updateUIForRTKEnabled(it) })
216215 addReaction(widgetModel.productConnection
217- .observeOn(SchedulerProvider .getInstance(). ui())
216+ .observeOn(SchedulerProvider .ui())
218217 .subscribe { widgetStateDataProcessor.onNext(ProductConnected (it)) })
219218 }
220219 // endregion
221220
222221 // region Reaction helpers
223222 private fun updateUIForRTKEnabled (rtkEnabled : Boolean ) {
224223 setRTKSwitch(rtkEnabled)
225- widgetStateDataProcessor.onNext(RTKEnabledUpdate (rtkEnabled))
224+ widgetStateDataProcessor.onNext(RTKEnabledUpdated (rtkEnabled))
226225 }
227226
228227 private fun setRTKEnabled (enabled : Boolean ) {
229228 addDisposable(widgetModel.rtkEnabled
230229 .firstOrError()
231- .observeOn(SchedulerProvider .getInstance(). ui())
230+ .observeOn(SchedulerProvider .ui())
232231 .subscribe(Consumer { rtkEnabled: Boolean ->
233232 if (rtkEnabled != enabled) {
234233 addDisposable(toggleRTK(enabled))
@@ -238,7 +237,7 @@ open class RTKEnabledWidget @JvmOverloads constructor(
238237
239238 private fun toggleRTK (enabled : Boolean ): Disposable {
240239 return widgetModel.setRTKEnabled(enabled)
241- .observeOn(SchedulerProvider .getInstance(). ui())
240+ .observeOn(SchedulerProvider .ui())
242241 .subscribe({}
243242 ) { throwable: Throwable ->
244243 setRTKSwitch(! enabled)
@@ -333,42 +332,43 @@ open class RTKEnabledWidget @JvmOverloads constructor(
333332
334333 // region Hooks
335334 /* *
336- * Get the [RTKEnabledWidgetUIState ] updates
335+ * Get the [UIState ] updates
337336 */
338- fun getUIStateUpdates (): Flowable <RTKEnabledWidgetUIState > {
339- return uiUpdateStateProcessor
337+ fun getUIStateUpdates (): Flowable <UIState > {
338+ return uiUpdateStateProcessor.onBackpressureBuffer()
340339 }
341340
342341 /* *
343342 * Widget UI update State
344343 */
345- sealed class RTKEnabledWidgetUIState {
344+ sealed class UIState {
346345 /* *
347346 * RTK enabled switch check changed update
348347 */
349- data class RTKEnabledSwitchCheckChanged (val isChecked : Boolean ) : RTKEnabledWidgetUIState ()
348+ data class SwitchChanged (val isChecked : Boolean ) : UIState ()
350349 }
351350
352351 /* *
353- * Get the [RTKEnabledWidgetState ] updates
352+ * Get the [ModelState ] updates
354353 */
355- override fun getWidgetStateUpdate (): Flowable <RTKEnabledWidgetState > {
354+ @SuppressWarnings
355+ override fun getWidgetStateUpdate (): Flowable <ModelState > {
356356 return super .getWidgetStateUpdate()
357357 }
358358
359359 /* *
360360 * Class defines the widget state updates
361361 */
362- sealed class RTKEnabledWidgetState {
362+ sealed class ModelState {
363363 /* *
364364 * Product connection update
365365 */
366- data class ProductConnected (val isConnected : Boolean ) : RTKEnabledWidgetState ()
366+ data class ProductConnected (val isConnected : Boolean ) : ModelState ()
367367
368368 /* *
369369 * RTK enabled update
370370 */
371- data class RTKEnabledUpdate (val isRTKEnabled : Boolean ) : RTKEnabledWidgetState ()
371+ data class RTKEnabledUpdated (val isRTKEnabled : Boolean ) : ModelState ()
372372 }
373373 // endregion
374374}
0 commit comments