@@ -29,6 +29,7 @@ import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
2929import com.simplecityapps.shuttle.R
3030import com.simplecityapps.shuttle.ui.common.TagEditorMenuSanitiser
3131import com.simplecityapps.shuttle.ui.common.autoCleared
32+ import com.simplecityapps.shuttle.ui.common.autoClearedNullable
3233import com.simplecityapps.shuttle.ui.common.dialog.EditTextAlertDialog
3334import com.simplecityapps.shuttle.ui.common.dialog.ShowExcludeDialog
3435import com.simplecityapps.shuttle.ui.common.dialog.TagEditorAlertDialog
@@ -67,7 +68,7 @@ class QueueFragment :
6768 private var adapter: RecyclerAdapter ? = null
6869 private var recyclerView: FastScrollRecyclerView ? = null
6970
70- private var toolbar: Toolbar by autoCleared ()
71+ private var toolbar: Toolbar ? by autoClearedNullable ()
7172 private var toolbarTitleTextView: TextView by autoCleared()
7273 private var toolbarSubtitleTextView: TextView by autoCleared()
7374 private var progressBar: ProgressBar by autoCleared()
@@ -123,28 +124,31 @@ class QueueFragment :
123124 view.findParentMultiSheetView()?.addSheetStateChangeListener(sheetStateChangeListener)
124125
125126 toolbar = view.findViewById(R .id.toolbar)
126- toolbar.inflateMenu(R .menu.menu_up_next)
127- toolbar.setOnMenuItemClickListener { menuItem ->
127+ toolbar!! .inflateMenu(R .menu.menu_up_next)
128+ toolbar!! .setOnMenuItemClickListener { menuItem ->
128129 when (menuItem.itemId) {
129130 R .id.scrollToCurrent -> {
130131 presenter.scrollToCurrent()
131132 true
132133 }
134+
133135 R .id.playlist -> {
134- playlistMenuView.createPlaylistMenu(toolbar.menu)
136+ playlistMenuView.createPlaylistMenu(toolbar!! .menu)
135137 true
136138 }
139+
137140 R .id.clearQueue -> {
138141 presenter.clearQueue()
139142 true
140143 }
144+
141145 else -> {
142146 playlistMenuView.handleMenuItem(menuItem, PlaylistData .Queue )
143147 }
144148 }
145149 }
146150
147- toolbar.setOnClickListener {
151+ toolbar!! .setOnClickListener {
148152 view.findParentMultiSheetView()?.let { multiSheetView ->
149153 if (multiSheetView.currentSheet != MultiSheetView .Sheet .SECOND ) {
150154 multiSheetView.expandSheet(MultiSheetView .Sheet .SECOND )
@@ -157,9 +161,9 @@ class QueueFragment :
157161 presenter.bindView(this )
158162 playlistMenuPresenter.bindView(playlistMenuView)
159163
160- playlistMenuView.createPlaylistMenu(toolbar.menu)
164+ playlistMenuView.createPlaylistMenu(toolbar!! .menu)
161165
162- val trialMenuItem = toolbar.menu.findItem(R .id.trial)
166+ val trialMenuItem = toolbar!! .menu.findItem(R .id.trial)
163167 trialMenuItem.actionView.setOnClickListener {
164168 TrialDialogFragment .newInstance().show(childFragmentManager)
165169 }
@@ -169,13 +173,15 @@ class QueueFragment :
169173 is TrialState .Pretrial , is TrialState .Paid , is TrialState .Unknown -> {
170174 trialMenuItem.isVisible = false
171175 }
176+
172177 is TrialState .Trial -> {
173178 trialMenuItem.isVisible = true
174179 val daysRemainingText: TextView = trialMenuItem.actionView.findViewById(R .id.daysRemaining)
175180 daysRemainingText.text = TimeUnit .MILLISECONDS .toDays(trialState.timeRemaining).toString()
176181 val progress: CircularProgressView = trialMenuItem.actionView.findViewById(R .id.progress)
177182 progress.setProgress((trialState.timeRemaining / trialManager.trialLength.toDouble()).toFloat())
178183 }
184+
179185 is TrialState .Expired -> {
180186 trialMenuItem.isVisible = true
181187 val daysRemainingText: TextView = trialMenuItem.actionView.findViewById(R .id.daysRemaining)
@@ -314,20 +320,24 @@ class QueueFragment :
314320 presenter.removeFromQueue(queueItem)
315321 return @setOnMenuItemClickListener true
316322 }
323+
317324 R .id.playNext -> {
318325 presenter.playNext(queueItem)
319326 return @setOnMenuItemClickListener true
320327 }
328+
321329 R .id.exclude -> {
322330 ShowExcludeDialog (requireContext(), queueItem.song.name) {
323331 presenter.exclude(queueItem)
324332 }
325333 return @setOnMenuItemClickListener true
326334 }
335+
327336 R .id.editTags -> {
328337 presenter.editTags(queueItem)
329338 return @setOnMenuItemClickListener true
330339 }
340+
331341 else -> {
332342 playlistMenuView.handleMenuItem(menuItem, PlaylistData .Songs (queueItem.song))
333343 }
@@ -347,16 +357,18 @@ class QueueFragment :
347357 private val sheetStateChangeListener = object : MultiSheetView .SheetStateChangeListener {
348358
349359 override fun onSheetStateChanged (sheet : Int , state : Int ) {
350- toolbar.menu.findItem(R .id.scrollToCurrent)?.isVisible = sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_EXPANDED
351- toolbar.menu.findItem(R .id.playlist)?.isVisible = sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_EXPANDED
352- toolbar.menu.findItem(R .id.clearQueue)?.isVisible = sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_EXPANDED
360+ toolbar?.let { toolbar ->
361+ toolbar.menu.findItem(R .id.scrollToCurrent)?.isVisible = sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_EXPANDED
362+ toolbar.menu.findItem(R .id.playlist)?.isVisible = sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_EXPANDED
363+ toolbar.menu.findItem(R .id.clearQueue)?.isVisible = sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_EXPANDED
353364
354- if (sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_EXPANDED ) {
355- toolbar.menu.findItem(R .id.trial).isVisible = false
356- }
357- if (sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_COLLAPSED ) {
358- if (trialManager.trialState.value is TrialState .Trial || trialManager.trialState.value is TrialState .Expired ) {
359- toolbar.menu.findItem(R .id.trial).isVisible = true
365+ if (sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_EXPANDED ) {
366+ toolbar.menu.findItem(R .id.trial).isVisible = false
367+ }
368+ if (sheet == MultiSheetView .Sheet .SECOND && state == BottomSheetBehavior .STATE_COLLAPSED ) {
369+ if (trialManager.trialState.value is TrialState .Trial || trialManager.trialState.value is TrialState .Expired ) {
370+ toolbar.menu.findItem(R .id.trial).isVisible = true
371+ }
360372 }
361373 }
362374 }
@@ -382,6 +394,7 @@ class QueueFragment :
382394 is NetworkResult .Success -> {
383395 PromoCodeDialogFragment .newInstance(result.body.promoCode).show(childFragmentManager)
384396 }
397+
385398 is NetworkResult .Failure -> {
386399 Toast .makeText(requireContext(), " Failed to retrieve promo code" , Toast .LENGTH_LONG ).show()
387400 }
0 commit comments