diff --git a/app/build.gradle b/app/build.gradle
index 266fbde92..1ff417ace 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -137,11 +137,9 @@ dependencies {
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
- def material_dialog_version = "3.1.1"
+ def material_dialog_version = "0.9.6.0"
implementation "com.afollestad.material-dialogs:core:$material_dialog_version"
- implementation "com.afollestad.material-dialogs:input:$material_dialog_version"
- implementation "com.afollestad.material-dialogs:color:$material_dialog_version"
- implementation "com.afollestad.material-dialogs:bottomsheets:$material_dialog_version"
+ implementation "com.afollestad.material-dialogs:commons:$material_dialog_version"
implementation 'com.afollestad:material-cab:0.1.12'
implementation 'com.github.bumptech.glide:glide:3.8.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9815250cc..99aa70d9e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -105,7 +105,7 @@
-
+
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt
index 6b2154a66..f16f28714 100755
--- a/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/ArtistDetailActivity.kt
@@ -22,6 +22,7 @@ import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
import code.name.monkey.retromusic.adapter.album.HorizontalAlbumAdapter
import code.name.monkey.retromusic.adapter.song.SimpleSongAdapter
import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog
+import code.name.monkey.retromusic.extensions.extraNotNull
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.extensions.surfaceColor
@@ -95,21 +96,13 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailsView,
setLightNavigationBar(true)
setBottomBarVisibility(View.GONE)
window.sharedElementsUseOverlay = true
+ windowEnterTransition()
App.musicComponent.inject(this)
artistDetailsPresenter.attachView(this)
+ val artistId = extraNotNull(EXTRA_ARTIST_ID).value
+ artistDetailsPresenter.loadArtist(artistId)
- if (intent.extras!!.containsKey(EXTRA_ARTIST_ID)) {
- intent.extras?.getInt(EXTRA_ARTIST_ID)?.let {
- artistDetailsPresenter.loadArtist(it)
- val name = "${getString(R.string.transition_artist_image)}_$it"
- artistCoverContainer?.transitionName = name
- }
- } else {
- finish()
- }
-
- windowEnterTransition()
ActivityCompat.postponeEnterTransition(this)
setupRecyclerView()
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt
index a6d5dd39f..224d85e9a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt
@@ -6,7 +6,6 @@ import android.content.res.ColorStateList
import android.os.AsyncTask
import android.os.Build
import android.os.Bundle
-import android.text.InputType
import android.text.TextUtils
import android.view.*
import androidx.annotation.StringRes
@@ -16,12 +15,14 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter
import androidx.viewpager.widget.ViewPager
import code.name.monkey.appthemehelper.ThemeStore
-import code.name.monkey.appthemehelper.util.*
import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor
+import code.name.monkey.appthemehelper.util.ColorUtil
+import code.name.monkey.appthemehelper.util.MaterialValueHelper
+import code.name.monkey.appthemehelper.util.TintHelper
+import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
-import code.name.monkey.retromusic.activities.tageditor.WriteTagsAsyncTask
import code.name.monkey.retromusic.extensions.surfaceColor
import code.name.monkey.retromusic.extensions.textColorSecondary
import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment
@@ -34,18 +35,10 @@ import code.name.monkey.retromusic.model.lyrics.Lyrics
import code.name.monkey.retromusic.util.LyricUtil
import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtilKT
-import code.name.monkey.retromusic.util.RetroUtil
-import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.input.getInputLayout
-import com.afollestad.materialdialogs.input.input
import kotlinx.android.synthetic.main.activity_lyrics.*
import kotlinx.android.synthetic.main.fragment_lyrics.*
import kotlinx.android.synthetic.main.fragment_synced.*
-import org.jaudiotagger.tag.FieldKey
import java.io.File
-import java.util.*
-import kotlin.collections.ArrayList
-import kotlin.collections.set
class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener,
ViewPager.OnPageChangeListener {
@@ -170,7 +163,7 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener,
e.printStackTrace()
}
- val materialDialog = MaterialDialog(this)
+ /*val materialDialog = MaterialDialog(this)
.show {
title(R.string.add_time_framed_lryics)
negativeButton(R.string.action_search) {
@@ -188,7 +181,7 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener,
}
}
- MaterialUtil.setTint(materialDialog.getInputLayout(), false)
+ MaterialUtil.setTint(materialDialog.getInputLayout(), false)*/
}
private fun updateSong() {
@@ -206,7 +199,7 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener,
lyricsString!!
}
- val materialDialog = MaterialDialog(
+ /*val materialDialog = MaterialDialog(
this
).show {
@@ -231,7 +224,7 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener,
updateSong()
}
}
- MaterialUtil.setTint(materialDialog.getInputLayout(), false)
+ MaterialUtil.setTint(materialDialog.getInputLayout(), false)*/
}
private fun getSongPaths(song: Song): ArrayList {
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
index 34be7380e..9b14e3e85 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt
@@ -228,6 +228,12 @@ class MainActivity : AbsSlidingMusicPanelActivity(),
menu.add(0, R.id.action_search, 0, getString(R.string.action_search))
.setIcon(R.drawable.ic_search_white_24dp)
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS)
+ ToolbarContentTintHelper.handleOnCreateOptionsMenu(
+ this,
+ toolbar,
+ menu,
+ getToolbarBackgroundColor(toolbar)
+ )
return super.onCreateOptionsMenu(menu)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt
index 6872f1ea2..241d59c4b 100755
--- a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt
@@ -4,13 +4,17 @@ import android.os.Bundle
import android.view.MenuItem
import androidx.annotation.StringRes
import androidx.fragment.app.Fragment
+import code.name.monkey.appthemehelper.ThemeStore
+import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsBaseActivity
+import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
import code.name.monkey.retromusic.extensions.applyToolbar
import code.name.monkey.retromusic.fragments.settings.MainSettingsFragment
+import com.afollestad.materialdialogs.color.ColorChooserDialog
import kotlinx.android.synthetic.main.activity_settings.*
-class SettingsActivity : AbsBaseActivity() {
+class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback {
private val fragmentManager = supportFragmentManager
@@ -69,4 +73,19 @@ class SettingsActivity : AbsBaseActivity() {
companion object {
const val TAG: String = "SettingsActivity"
}
+
+ override fun onColorSelection(dialog: ColorChooserDialog, selectedColor: Int) {
+ when (dialog.title) {
+ R.string.accent_color -> {
+ ThemeStore.editTheme(this).accentColor(selectedColor).commit()
+ if (VersionUtils.hasNougatMR())
+ DynamicShortcutManager(this).updateDynamicShortcuts()
+ }
+ }
+ recreate()
+ }
+
+ override fun onColorChooserDismissed(dialog: ColorChooserDialog) {
+
+ }
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt
similarity index 90%
rename from app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt
rename to app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt
index c3c1c5e59..65d6a1cc2 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt
@@ -1,4 +1,4 @@
-package code.name.monkey.retromusic.activities
+package code.name.monkey.retromusic.activities.albums
import android.app.ActivityOptions
import android.content.Intent
@@ -10,13 +10,13 @@ import android.view.SubMenu
import android.view.View
import android.widget.ImageView
import androidx.core.app.ActivityCompat
+import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.MaterialUtil
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
-import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity
import code.name.monkey.retromusic.activities.tageditor.AbsTagEditorActivity
@@ -25,6 +25,7 @@ import code.name.monkey.retromusic.adapter.album.HorizontalAlbumAdapter
import code.name.monkey.retromusic.adapter.song.SimpleSongAdapter
import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog
import code.name.monkey.retromusic.dialogs.DeleteSongsDialog
+import code.name.monkey.retromusic.extensions.extraNotNull
import code.name.monkey.retromusic.extensions.ripAlpha
import code.name.monkey.retromusic.extensions.show
import code.name.monkey.retromusic.extensions.surfaceColor
@@ -36,7 +37,6 @@ import code.name.monkey.retromusic.helper.SortOrder.AlbumSongSortOrder
import code.name.monkey.retromusic.interfaces.CabHolder
import code.name.monkey.retromusic.model.Album
import code.name.monkey.retromusic.model.Artist
-import code.name.monkey.retromusic.mvp.presenter.AlbumDetailsPresenter
import code.name.monkey.retromusic.mvp.presenter.AlbumDetailsView
import code.name.monkey.retromusic.rest.model.LastFmAlbum
import code.name.monkey.retromusic.util.*
@@ -46,7 +46,6 @@ import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.activity_album.*
import kotlinx.android.synthetic.main.activity_album_content.*
import java.util.*
-import javax.inject.Inject
import android.util.Pair as UtilPair
class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, CabHolder {
@@ -69,6 +68,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C
return cab as MaterialCab
}
+ private lateinit var viewModel: AlbumDetailsViewModel
private lateinit var simpleSongAdapter: SimpleSongAdapter
private lateinit var album: Album
private lateinit var artistImage: ImageView
@@ -80,9 +80,6 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C
return wrapSlidingMusicPanel(R.layout.activity_album)
}
- @Inject
- lateinit var albumDetailsPresenter: AlbumDetailsPresenter
-
private fun windowEnterTransition() {
val slide = Slide()
slide.excludeTarget(R.id.appBarLayout, true)
@@ -101,34 +98,30 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C
setLightNavigationBar(true)
setBottomBarVisibility(View.GONE)
window.sharedElementsUseOverlay = true
-
- App.musicComponent.inject(this)
- albumDetailsPresenter.attachView(this)
-
- if (intent.extras!!.containsKey(EXTRA_ALBUM_ID)) {
- intent.extras?.getInt(EXTRA_ALBUM_ID)?.let {
- albumDetailsPresenter.loadAlbum(it)
- albumCoverContainer?.transitionName =
- "${getString(R.string.transition_album_art)}_$it"
- }
- } else {
- finish()
- }
-
windowEnterTransition()
+
+ val albumId = extraNotNull(EXTRA_ALBUM_ID).value
ActivityCompat.postponeEnterTransition(this)
-
-
- artistImage = findViewById(R.id.artistImage)
-
+ val viewModelFactory = AlbumDetailsViewModelFactory(application, albumId)
+ viewModel = ViewModelProvider(this, viewModelFactory).get(AlbumDetailsViewModel::class.java)
+ viewModel.getAlbum().observe(this, androidx.lifecycle.Observer {
+ ActivityCompat.startPostponedEnterTransition(this@AlbumDetailsActivity)
+ album(it)
+ })
+ viewModel.getArtist().observe(this, androidx.lifecycle.Observer {
+ loadArtistImage(it)
+ })
+ viewModel.getAlbumInfo().observe(this, androidx.lifecycle.Observer {
+ aboutAlbum(it)
+ })
setupRecyclerView()
-
+ artistImage = findViewById(R.id.artistImage)
artistImage.setOnClickListener {
val artistPairs = ActivityOptions.makeSceneTransitionAnimation(
this,
UtilPair.create(
artistImage,
- "${getString(R.string.transition_artist_image)}_${album.artistId}"
+ getString(R.string.transition_artist_image)
)
)
NavigationUtil.goToArtistOptions(this, album.artistId, artistPairs)
@@ -159,11 +152,6 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C
}
}
- override fun onDestroy() {
- super.onDestroy()
- albumDetailsPresenter.detachView()
- }
-
override fun complete() {
ActivityCompat.startPostponedEnterTransition(this)
}
@@ -201,8 +189,8 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C
}
loadAlbumCover()
simpleSongAdapter.swapDataSet(album.songs)
- albumDetailsPresenter.loadMore(album.artistId)
- albumDetailsPresenter.aboutAlbum(album.artistName ?: "-", album.title ?: "-")
+ viewModel.loadArtistAsync(album.artistId)
+ viewModel.loadAlbumInfoAsync(album)
}
override fun moreAlbums(albums: List) {
@@ -277,7 +265,6 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C
MaterialUtil.setTint(button = shuffleAction, color = buttonColor)
MaterialUtil.setTint(button = playAction, color = buttonColor)
-
toolbar.setBackgroundColor(surfaceColor())
setSupportActionBar(toolbar)
supportActionBar?.title = null
@@ -332,7 +319,10 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C
albumCoverContainer,
"${getString(R.string.transition_album_art)}_${album.id}"
)
- startActivityForResult(intent, TAG_EDITOR_REQUEST, options.toBundle())
+ startActivityForResult(
+ intent,
+ TAG_EDITOR_REQUEST, options.toBundle()
+ )
return true
}
/*Sort*/
@@ -389,18 +379,6 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C
album.songs?.let { simpleSongAdapter.swapDataSet(it) }
}
- override fun onMediaStoreChanged() {
- super.onMediaStoreChanged()
- reload()
- }
-
- private fun reload() {
- if (intent.extras!!.containsKey(EXTRA_ALBUM_ID)) {
- intent.extras?.getInt(EXTRA_ALBUM_ID)?.let { albumDetailsPresenter.loadAlbum(it) }
- } else {
- finish()
- }
- }
override fun onBackPressed() {
if (cab != null && cab!!.isActive) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt
new file mode 100644
index 000000000..4debc3da7
--- /dev/null
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt
@@ -0,0 +1,54 @@
+package code.name.monkey.retromusic.activities.albums
+
+import android.app.Application
+import androidx.lifecycle.AndroidViewModel
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.viewModelScope
+import code.name.monkey.retromusic.model.Album
+import code.name.monkey.retromusic.model.Artist
+import code.name.monkey.retromusic.providers.RepositoryImpl
+import code.name.monkey.retromusic.rest.model.LastFmAlbum
+import kotlinx.coroutines.Deferred
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.launch
+
+class AlbumDetailsViewModel(
+ application: Application,
+ private val albumId: Int
+) : AndroidViewModel(application) {
+ private val _repository = RepositoryImpl(application.applicationContext)
+ private val _album = MutableLiveData()
+ private val _artist = MutableLiveData()
+ private val _lastFmAlbum = MutableLiveData()
+
+ fun getAlbum(): LiveData = _album
+ fun getArtist(): LiveData = _artist
+ fun getAlbumInfo(): LiveData = _lastFmAlbum
+
+ init {
+ loadDetails()
+ }
+
+ private fun loadDetails() = viewModelScope.launch {
+ _album.postValue(
+ loadAlbumAsync.await() ?: throw NullPointerException("Album couldn't found")
+ )
+ }
+
+ fun loadAlbumInfoAsync(album: Album) = viewModelScope.launch(Dispatchers.IO) {
+ val lastFmAlbum = _repository.albumInfo(album.artistName ?: "-", album.title ?: "-")
+ _lastFmAlbum.postValue(lastFmAlbum)
+ }
+
+ fun loadArtistAsync(artistId: Int) = viewModelScope.launch(Dispatchers.IO) {
+ val artist = _repository.artistById(artistId)
+ _artist.postValue(artist)
+ }
+
+ private val loadAlbumAsync: Deferred
+ get() = viewModelScope.async(Dispatchers.IO) {
+ _repository.albumById(albumId)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModelFactory.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModelFactory.kt
new file mode 100644
index 000000000..7f5aa8476
--- /dev/null
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModelFactory.kt
@@ -0,0 +1,19 @@
+package code.name.monkey.retromusic.activities.albums
+
+import android.app.Application
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+class AlbumDetailsViewModelFactory(
+ private val application: Application,
+ private val albumId: Int
+) :
+ ViewModelProvider.AndroidViewModelFactory(application) {
+ override fun create(modelClass: Class): T {
+ return if (modelClass.isAssignableFrom(AlbumDetailsViewModel::class.java)) {
+ AlbumDetailsViewModel(application, albumId) as T
+ } else {
+ throw IllegalArgumentException("ViewModel Not Found")
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
index fac356ecd..09b665755 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
@@ -14,6 +14,7 @@ import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.common.ATHToolbarActivity
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil
+import code.name.monkey.appthemehelper.util.MaterialDialogsUtil
import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.LanguageContextWrapper
import code.name.monkey.retromusic.R
@@ -33,6 +34,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
setImmersiveFullscreen()
registerSystemUiVisibility()
toggleScreenOn()
+ MaterialDialogsUtil.updateMaterialDialogsThemeSingleton(this)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
index 4ee68b9b7..9e1bd13c0 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/bugreport/BugReportActivity.kt
@@ -28,8 +28,7 @@ import code.name.monkey.retromusic.activities.bugreport.model.github.ExtraInfo
import code.name.monkey.retromusic.activities.bugreport.model.github.GithubLogin
import code.name.monkey.retromusic.activities.bugreport.model.github.GithubTarget
import code.name.monkey.retromusic.misc.DialogAsyncTask
-import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.callbacks.onCancel
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.textfield.TextInputLayout
import kotlinx.android.synthetic.main.activity_bug_report.*
@@ -278,27 +277,25 @@ open class BugReportActivity : AbsThemeActivity() {
when (result) {
RESULT_SUCCESS -> tryToFinishActivity()
- RESULT_BAD_CREDENTIALS -> MaterialDialog(context).show {
- title(R.string.bug_report_failed)
- message(R.string.bug_report_failed_wrong_credentials)
- positiveButton(android.R.string.ok)
- }
- RESULT_INVALID_TOKEN -> MaterialDialog(context).show {
- title(R.string.bug_report_failed)
- message(R.string.bug_report_failed_invalid_token)
- positiveButton(android.R.string.ok)
- }
- RESULT_ISSUES_NOT_ENABLED -> MaterialDialog(context).show {
- title(R.string.bug_report_failed)
- message(R.string.bug_report_failed_issues_not_available)
- positiveButton(android.R.string.ok)
- }
- else -> MaterialDialog(context).show {
- title(R.string.bug_report_failed)
- message(R.string.bug_report_failed_unknown)
- positiveButton(android.R.string.ok) { tryToFinishActivity() }
- onCancel { tryToFinishActivity() }
- }
+ RESULT_BAD_CREDENTIALS -> MaterialAlertDialogBuilder(context)
+ .setTitle(R.string.bug_report_failed)
+ .setMessage(R.string.bug_report_failed_wrong_credentials)
+ .setPositiveButton(android.R.string.ok, null)
+ .show()
+ RESULT_INVALID_TOKEN -> MaterialAlertDialogBuilder(context)
+ .setTitle(R.string.bug_report_failed)
+ .setMessage(R.string.bug_report_failed_invalid_token)
+ .setPositiveButton(android.R.string.ok, null).show()
+ RESULT_ISSUES_NOT_ENABLED -> MaterialAlertDialogBuilder(context)
+ .setTitle(R.string.bug_report_failed)
+ .setMessage(R.string.bug_report_failed_issues_not_available)
+ .setPositiveButton(android.R.string.ok, null)
+
+ else -> MaterialAlertDialogBuilder(context)
+ .setTitle(R.string.bug_report_failed)
+ .setMessage(R.string.bug_report_failed_unknown)
+ .setPositiveButton(android.R.string.ok) { _, _ -> tryToFinishActivity() }
+ .setNegativeButton(android.R.string.cancel) { _, _ -> { tryToFinishActivity() } }
}
}
@@ -309,6 +306,7 @@ open class BugReportActivity : AbsThemeActivity() {
}
}
+
companion object {
fun report(
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
index 7d81bcee3..8b49a57c7 100755
--- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt
@@ -13,6 +13,7 @@ import android.util.Log
import android.view.MenuItem
import android.view.View
import android.view.animation.OvershootInterpolator
+import androidx.appcompat.app.AlertDialog
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil
@@ -24,9 +25,8 @@ import code.name.monkey.retromusic.activities.base.AbsBaseActivity
import code.name.monkey.retromusic.activities.saf.SAFGuideActivity
import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.SAFUtil
-import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.list.listItems
import com.google.android.material.button.MaterialButton
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.android.synthetic.main.activity_album_tag_editor.*
import org.jaudiotagger.audio.AudioFile
import org.jaudiotagger.audio.AudioFileIO
@@ -48,17 +48,18 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() {
private var savedTags: Map? = null
private var savedArtworkInfo: ArtworkInfo? = null
- protected val show: MaterialDialog
- get() = MaterialDialog(this).show {
- title(R.string.update_image)
- listItems(items = items) { _, position, _ ->
- when (position) {
- 0 -> startImagePicker()
- 1 -> searchImageOnWeb()
- 2 -> deleteImage()
+ protected val show: AlertDialog
+ get() =
+ MaterialAlertDialogBuilder(this)
+ .setTitle(R.string.update_image)
+ .setItems(items.toTypedArray()) { _, position ->
+ when (position) {
+ 0 -> startImagePicker()
+ 1 -> searchImageOnWeb()
+ 2 -> deleteImage()
+ }
}
- }
- }
+ .show()
protected abstract val contentViewLayout: Int
internal val albumArtist: String?
diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
index b29684045..b66a0a496 100755
--- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt
@@ -91,7 +91,7 @@ class AlbumTagEditorActivity : AbsTagEditorActivity(), TextWatcher {
setDrawUnderStatusBar()
super.onCreate(savedInstanceState)
window.sharedElementsUseOverlay = true
- imageContainer?.transitionName = "${getString(R.string.transition_album_art)}_$id"
+ imageContainer?.transitionName = getString(R.string.transition_album_art)
windowEnterTransition()
setUpViews()
setupToolbar()
@@ -162,7 +162,7 @@ class AlbumTagEditorActivity : AbsTagEditorActivity(), TextWatcher {
writeValuesToFiles(
fieldKeyValueMap,
- if (deleteAlbumArt) ArtworkInfo(id, null)
+ if (deleteAlbumArt) AbsTagEditorActivity.ArtworkInfo(id, null)
else if (albumArtBitmap == null) null else ArtworkInfo(id, albumArtBitmap!!)
)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt
index 83f97aee4..691852b51 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt
@@ -180,7 +180,7 @@ open class AlbumAdapter(
val activityOptions = ActivityOptions.makeSceneTransitionAnimation(
activity,
imageContainerCard ?: image,
- "${activity.getString(R.string.transition_album_art)}_${dataSet[layoutPosition].id}"
+ activity.getString(R.string.transition_album_art)
)
NavigationUtil.goToAlbumOptions(
activity,
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt
index 9986fe28e..5a774b20b 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt
@@ -100,7 +100,7 @@ class AlbumFullWidthAdapter(
val activityOptions = ActivityOptions.makeSceneTransitionAnimation(
activity,
imageContainerCard ?: image,
- "${activity.getString(R.string.transition_album_art)}_${dataSet[layoutPosition].id}"
+ activity.getString(R.string.transition_album_art)
)
NavigationUtil.goToAlbumOptions(activity, dataSet[layoutPosition].id, activityOptions)
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt
index e85504d19..65aa15b5a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt
@@ -142,7 +142,7 @@ class ArtistAdapter(
val activityOptions = ActivityOptions.makeSceneTransitionAnimation(
activity,
imageContainerCard ?: image,
- "${activity.getString(R.string.transition_artist_image)}_${dataSet[layoutPosition].id}"
+ activity.getString(R.string.transition_artist_image)
)
NavigationUtil.goToArtistOptions(
activity, dataSet[layoutPosition].id, activityOptions
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlaylistSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlaylistSongAdapter.kt
index 6ffc8942f..252c837aa 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlaylistSongAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlaylistSongAdapter.kt
@@ -60,7 +60,7 @@ open class PlaylistSongAdapter(
val activityOptions = ActivityOptions.makeSceneTransitionAnimation(
activity,
imageContainerCard ?: image,
- "${activity.getString(R.string.transition_album_art)}_${song.albumId}"
+ activity.getString(R.string.transition_album_art)
)
NavigationUtil.goToAlbumOptions(activity, song.albumId, activityOptions)
return true
diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt
index e82d05137..86fbf94ca 100644
--- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt
@@ -186,7 +186,7 @@ open class SongAdapter(
val activityOptions = ActivityOptions.makeSceneTransitionAnimation(
activity,
imageContainerCard ?: image,
- "${activity.getString(R.string.transition_album_art)}_${song.albumId}"
+ activity.getString(R.string.transition_album_art)
)
NavigationUtil.goToAlbumOptions(activity, song.albumId, activityOptions)
return true
diff --git a/app/src/main/java/code/name/monkey/retromusic/dagger/MusicComponent.kt b/app/src/main/java/code/name/monkey/retromusic/dagger/MusicComponent.kt
index 86703f4bb..7cd5ef8d0 100644
--- a/app/src/main/java/code/name/monkey/retromusic/dagger/MusicComponent.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/dagger/MusicComponent.kt
@@ -14,7 +14,10 @@
package code.name.monkey.retromusic.dagger
-import code.name.monkey.retromusic.activities.*
+import code.name.monkey.retromusic.activities.ArtistDetailActivity
+import code.name.monkey.retromusic.activities.GenreDetailsActivity
+import code.name.monkey.retromusic.activities.PlaylistDetailActivity
+import code.name.monkey.retromusic.activities.SearchActivity
import code.name.monkey.retromusic.dagger.module.AppModule
import code.name.monkey.retromusic.dagger.module.PresenterModule
import code.name.monkey.retromusic.fragments.albums.AlbumsFragment
@@ -50,8 +53,6 @@ interface MusicComponent {
fun inject(artistDetailActivity: ArtistDetailActivity)
- fun inject(albumDetailsActivity: AlbumDetailsActivity)
-
fun inject(playlistDetailActivity: PlaylistDetailActivity)
fun inject(genreDetailsActivity: GenreDetailsActivity)
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.java b/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.java
new file mode 100644
index 000000000..a276db9c3
--- /dev/null
+++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.java
@@ -0,0 +1,157 @@
+package code.name.monkey.retromusic.dialogs;
+
+import android.Manifest;
+import android.app.Dialog;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Environment;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
+import androidx.fragment.app.DialogFragment;
+
+import com.afollestad.materialdialogs.MaterialDialog;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import code.name.monkey.retromusic.R;
+
+public class BlacklistFolderChooserDialog extends DialogFragment implements MaterialDialog.ListCallback {
+
+ String initialPath = Environment.getExternalStorageDirectory().getAbsolutePath();
+ private File parentFolder;
+ private File[] parentContents;
+ private boolean canGoUp = false;
+ private FolderCallback callback;
+
+ public static BlacklistFolderChooserDialog create() {
+ return new BlacklistFolderChooserDialog();
+ }
+
+ private String[] getContentsArray() {
+ if (parentContents == null) {
+ if (canGoUp) {
+ return new String[]{".."};
+ }
+ return new String[]{};
+ }
+ String[] results = new String[parentContents.length + (canGoUp ? 1 : 0)];
+ if (canGoUp) {
+ results[0] = "..";
+ }
+ for (int i = 0; i < parentContents.length; i++) {
+ results[canGoUp ? i + 1 : i] = parentContents[i].getName();
+ }
+ return results;
+ }
+
+ private File[] listFiles() {
+ File[] contents = parentFolder.listFiles();
+ List results = new ArrayList<>();
+ if (contents != null) {
+ for (File fi : contents) {
+ if (fi.isDirectory()) {
+ results.add(fi);
+ }
+ }
+ Collections.sort(results, new FolderSorter());
+ return results.toArray(new File[results.size()]);
+ }
+ return null;
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
+ && ActivityCompat.checkSelfPermission(
+ getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)
+ != PackageManager.PERMISSION_GRANTED) {
+ return new MaterialDialog.Builder(getActivity())
+ .title(R.string.md_error_label)
+ .content(R.string.md_storage_perm_error)
+ .positiveText(android.R.string.ok)
+ .build();
+ }
+ if (savedInstanceState == null) {
+ savedInstanceState = new Bundle();
+ }
+ if (!savedInstanceState.containsKey("current_path")) {
+ savedInstanceState.putString("current_path", initialPath);
+ }
+ parentFolder = new File(savedInstanceState.getString("current_path", File.pathSeparator));
+ checkIfCanGoUp();
+ parentContents = listFiles();
+ MaterialDialog.Builder builder =
+ new MaterialDialog.Builder(getActivity())
+ .title(parentFolder.getAbsolutePath())
+ .items((CharSequence[]) getContentsArray())
+ .itemsCallback(this)
+ .autoDismiss(false)
+ .onPositive((dialog, which) -> {
+ dismiss();
+ callback.onFolderSelection(BlacklistFolderChooserDialog.this, parentFolder);
+ })
+ .onNegative((materialDialog, dialogAction) -> dismiss())
+ .positiveText(R.string.add_action)
+ .negativeText(android.R.string.cancel);
+ return builder.build();
+ }
+
+ @Override
+ public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence s) {
+ if (canGoUp && i == 0) {
+ parentFolder = parentFolder.getParentFile();
+ if (parentFolder.getAbsolutePath().equals("/storage/emulated")) {
+ parentFolder = parentFolder.getParentFile();
+ }
+ checkIfCanGoUp();
+ } else {
+ parentFolder = parentContents[canGoUp ? i - 1 : i];
+ canGoUp = true;
+ if (parentFolder.getAbsolutePath().equals("/storage/emulated")) {
+ parentFolder = Environment.getExternalStorageDirectory();
+ }
+ }
+ reload();
+ }
+
+ private void checkIfCanGoUp() {
+ canGoUp = parentFolder.getParent() != null;
+ }
+
+ private void reload() {
+ parentContents = listFiles();
+ MaterialDialog dialog = (MaterialDialog) getDialog();
+ dialog.setTitle(parentFolder.getAbsolutePath());
+ dialog.setItems((CharSequence[]) getContentsArray());
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putString("current_path", parentFolder.getAbsolutePath());
+ }
+
+ public void setCallback(FolderCallback callback) {
+ this.callback = callback;
+ }
+
+ public interface FolderCallback {
+ void onFolderSelection(@NonNull BlacklistFolderChooserDialog dialog, @NonNull File folder);
+ }
+
+ private static class FolderSorter implements Comparator {
+
+ @Override
+ public int compare(File lhs, File rhs) {
+ return lhs.getName().compareTo(rhs.getName());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.kt
deleted file mode 100644
index 25ace5fa5..000000000
--- a/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.kt
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 2019 Hemanth Savarala.
- *
- * Licensed under the GNU General Public License v3
- *
- * This is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by
- * the Free Software Foundation either version 3 of the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- */
-
-package code.name.monkey.retromusic.dialogs
-
-import android.Manifest
-import android.app.Dialog
-import android.content.pm.PackageManager
-import android.os.Build
-import android.os.Bundle
-import android.os.Environment
-import androidx.core.app.ActivityCompat
-import androidx.fragment.app.DialogFragment
-import code.name.monkey.retromusic.R
-import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.list.listItems
-import java.io.File
-import java.util.*
-import kotlin.collections.ArrayList
-
-class BlacklistFolderChooserDialog : DialogFragment() {
-
- private val initialPath = Environment.getExternalStorageDirectory().absolutePath
- private var parentFolder: File? = null
- private var parentContents: Array? = null
- private var canGoUp = false
- private var callback: FolderCallback? = null
-
-
- private fun contentsArray(): List {
- if (parentContents == null) {
- return if (canGoUp) {
- return listOf("..")
- } else listOf()
- }
-
- val results = arrayOfNulls(parentContents!!.size + if (canGoUp) 1 else 0)
- if (canGoUp) {
- results[0] = ".."
- }
- for (i in parentContents!!.indices) {
- results[if (canGoUp) i + 1 else i] = parentContents!![i].name
- }
-
- val data = ArrayList()
- for (i in results) {
- data.add(i!!)
- }
- return data
- }
-
- private fun listFiles(): Array? {
- val contents = parentFolder!!.listFiles()
- val results = ArrayList()
- if (contents != null) {
- for (fi in contents) {
- if (fi.isDirectory) {
- results.add(fi)
- }
- }
- Collections.sort(results, FolderSorter())
- return results.toTypedArray()
- }
- return null
- }
-
- override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
- var savedInstanceStateFinal = savedInstanceState
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
- ActivityCompat.checkSelfPermission(
- requireActivity(),
- Manifest.permission.READ_EXTERNAL_STORAGE
- ) != PackageManager.PERMISSION_GRANTED
- ) {
- return MaterialDialog(requireActivity()).show {
- title(R.string.md_error_label)
-
- message(R.string.md_storage_perm_error)
- positiveButton(android.R.string.ok)
- }
- }
- if (savedInstanceStateFinal == null) {
- savedInstanceStateFinal = Bundle()
- }
- if (!savedInstanceStateFinal.containsKey("current_path")) {
- savedInstanceStateFinal.putString("current_path", initialPath)
- }
- parentFolder = File(savedInstanceStateFinal.getString("current_path", File.pathSeparator))
- checkIfCanGoUp()
- parentContents = listFiles()
-
- return MaterialDialog(requireContext()).show {
- title(text = parentFolder!!.absolutePath)
-
- listItems(items = contentsArray(), waitForPositiveButton = false) { _, index, _ ->
- onSelection(index)
- }
- noAutoDismiss()
- positiveButton(R.string.add_action) {
- dismiss()
- callback!!.onFolderSelection(this@BlacklistFolderChooserDialog, parentFolder!!)
- }
- negativeButton(android.R.string.cancel) {
- dismiss()
- }
- }
- }
-
- private fun onSelection(i: Int) {
- if (canGoUp && i == 0) {
- parentFolder = parentFolder!!.parentFile
- if (parentFolder!!.absolutePath == "/storage/emulated") {
- parentFolder = parentFolder!!.parentFile
- }
- checkIfCanGoUp()
- } else {
- parentFolder = parentContents!![if (canGoUp) i - 1 else i]
- canGoUp = true
- if (parentFolder!!.absolutePath == "/storage/emulated") {
- parentFolder = Environment.getExternalStorageDirectory()
- }
- }
- reload()
- }
-
- private fun checkIfCanGoUp() {
- canGoUp = parentFolder!!.parent != null
- }
-
- private fun reload() {
- parentContents = listFiles()
- val dialog = dialog as MaterialDialog?
-
- dialog?.apply {
-
- setTitle(parentFolder!!.absolutePath)
- listItems(items = contentsArray()) { _, index, _ ->
- onSelection(index)
- }
- }
- }
-
- override fun onSaveInstanceState(outState: Bundle) {
- super.onSaveInstanceState(outState)
- outState.putString("current_path", parentFolder!!.absolutePath)
- }
-
- fun setCallback(callback: FolderCallback) {
- this.callback = callback
- }
-
- interface FolderCallback {
- fun onFolderSelection(dialog: BlacklistFolderChooserDialog, folder: File)
- }
-
- private class FolderSorter : Comparator {
-
- override fun compare(lhs: File, rhs: File): Int {
- return lhs.name.compareTo(rhs.name)
- }
- }
-
- companion object {
-
- fun create(): BlacklistFolderChooserDialog {
- return BlacklistFolderChooserDialog()
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/SleepTimerDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/SleepTimerDialog.kt
index 4af19be45..a1e946cf1 100755
--- a/app/src/main/java/code/name/monkey/retromusic/dialogs/SleepTimerDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/SleepTimerDialog.kt
@@ -36,9 +36,8 @@ import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.service.MusicService.ACTION_PENDING_QUIT
import code.name.monkey.retromusic.service.MusicService.ACTION_QUIT
import code.name.monkey.retromusic.util.PreferenceUtilKT
+import com.afollestad.materialdialogs.DialogAction
import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.WhichButton
-import com.afollestad.materialdialogs.actions.getActionButton
import com.google.android.material.dialog.MaterialAlertDialogBuilder
class SleepTimerDialog : DialogFragment() {
@@ -153,10 +152,10 @@ class SleepTimerDialog : DialogFragment() {
private fun updateCancelButton() {
val musicService = MusicPlayerRemote.musicService
if (musicService != null && musicService.pendingQuit) {
- materialDialog.getActionButton(WhichButton.NEGATIVE).text =
+ materialDialog.getActionButton(DialogAction.NEUTRAL).text =
materialDialog.context.getString(R.string.cancel_current_timer)
} else {
- materialDialog.getActionButton(WhichButton.NEGATIVE).text = null
+ materialDialog.getActionButton(DialogAction.NEUTRAL).text = null
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt
index 754182fab..57604d500 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt
@@ -5,8 +5,6 @@ import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.fragments.ReloadType.*
import code.name.monkey.retromusic.interfaces.MusicServiceEventListener
import code.name.monkey.retromusic.model.*
@@ -60,8 +58,8 @@ class LibraryViewModel(application: Application) :
_repository.favoritePlaylist()
)
for (r in result) {
- if (r is Success) {
- list.add(r.data)
+ if (r != null) {
+ list.add(r)
}
}
_homeSections.value = list
@@ -69,41 +67,27 @@ class LibraryViewModel(application: Application) :
private val loadSongs: Deferred>
get() = viewModelScope.async(IO) {
- when (val result = _repository.allSongs()) {
- is Success -> result.data
- is Error -> arrayListOf()
- }
+ _repository.allSongs()
}
private val loadAlbums: Deferred>
get() = viewModelScope.async(IO) {
- when (val result = _repository.allAlbums()) {
- is Success -> result.data
- is Error -> arrayListOf()
- }
+ _repository.allAlbums()
}
+
private val loadArtists: Deferred>
get() = viewModelScope.async(IO) {
- when (val result = _repository.allArtists()) {
- is Success -> result.data
- is Error -> arrayListOf()
- }
+ _repository.allArtists()
}
private val loadPlaylists: Deferred>
get() = viewModelScope.async(IO) {
- when (val result = _repository.allPlaylists()) {
- is Success -> result.data
- is Error -> arrayListOf()
- }
+ _repository.allPlaylists()
}
private val loadGenres: Deferred>
get() = viewModelScope.async(IO) {
- when (val result = _repository.allGenres()) {
- is Success -> result.data
- is Error -> arrayListOf()
- }
+ _repository.allGenres()
}
fun forceReload(reloadType: ReloadType) = viewModelScope.launch {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java
index 679e5d91e..5016ba7ab 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java
@@ -307,10 +307,10 @@ public class FoldersFragment extends AbsMainActivityFragment implements
String.format(getString(R.string.not_listed_in_media_store), file1.getName())),
Snackbar.LENGTH_LONG)
.setAction(R.string.action_scan,
- v -> new ListPathsAsyncTask(getActivity(), this::scanPaths)
+ v -> new ListPathsAsyncTask(requireActivity(), this::scanPaths)
.execute(
new ListPathsAsyncTask.LoadingInfo(finalFile, AUDIO_FILE_FILTER)))
- .setActionTextColor(ThemeStore.Companion.accentColor(getActivity()))
+ .setActionTextColor(ThemeStore.Companion.accentColor(requireActivity()))
.show();
}
}).execute(new ListSongsAsyncTask.LoadingInfo(toList(file.getParentFile()), fileFilter,
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt
index 4c323310a..b7d51f06c 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt
@@ -21,8 +21,8 @@ import android.view.View
import android.widget.Toast
import androidx.preference.ListPreference
import androidx.preference.Preference
-import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceManager
+import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.preferences.*
@@ -32,7 +32,7 @@ import code.name.monkey.retromusic.util.NavigationUtil
* @author Hemanth S (h4h13).
*/
-abstract class AbsSettingsFragment : PreferenceFragmentCompat() {
+abstract class AbsSettingsFragment : ATEPreferenceFragmentCompat() {
internal fun showProToastAndNavigate(message: String) {
Toast.makeText(requireContext(), "$message is Pro version feature.", Toast.LENGTH_SHORT)
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ImageSettingFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ImageSettingFragment.kt
index 2f60f1ba1..9b5873fa0 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ImageSettingFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ImageSettingFragment.kt
@@ -31,7 +31,6 @@ class ImageSettingFragment : AbsSettingsFragment() {
setSummary(autoDownloadImagesPolicy, o)
true
}
-
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/NowPlayingSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/NowPlayingSettingsFragment.kt
index cc032d19e..7e2b70487 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/NowPlayingSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/NowPlayingSettingsFragment.kt
@@ -48,20 +48,23 @@ class NowPlayingSettingsFragment : AbsSettingsFragment(),
}
private fun updateAlbumCoverStyleSummary() {
- val preference: Preference = findPreference(ALBUM_COVER_STYLE)!!
- preference.setSummary(PreferenceUtilKT.albumCoverStyle.titleRes)
+ val preference: Preference? = findPreference(ALBUM_COVER_STYLE)
+ preference?.setSummary(PreferenceUtilKT.albumCoverStyle.titleRes)
}
private fun updateNowPlayingScreenSummary() {
- val preference: Preference = findPreference(NOW_PLAYING_SCREEN_ID)!!
- preference.setSummary(PreferenceUtilKT.nowPlayingScreen.titleRes)
+ val preference: Preference? = findPreference(NOW_PLAYING_SCREEN_ID)
+ preference?.setSummary(PreferenceUtilKT.nowPlayingScreen.titleRes)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
PreferenceUtilKT.registerOnSharedPreferenceChangedListener(this)
- val preference: Preference = findPreference("album_cover_transform")!!
- setSummary(preference)
+ val preference: Preference? = findPreference("album_cover_transform")
+ preference?.setOnPreferenceChangeListener { albumPrefs, newValue ->
+ setSummary(albumPrefs, newValue)
+ true
+ }
}
override fun onDestroyView() {
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/OtherSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/OtherSettingsFragment.kt
index 398bd4eef..2338c6f7e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/OtherSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/OtherSettingsFragment.kt
@@ -17,9 +17,8 @@ package code.name.monkey.retromusic.fragments.settings
import android.os.Bundle
import android.view.View
import androidx.preference.Preference
-
+import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEListPreference
import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.preferences.MaterialListPreference
/**
* @author Hemanth S (h4h13).
@@ -27,8 +26,8 @@ import code.name.monkey.retromusic.preferences.MaterialListPreference
class OtherSettingsFragment : AbsSettingsFragment() {
override fun invalidateSettings() {
- val languagePreference: MaterialListPreference = findPreference("language_name")!!
- languagePreference.setOnPreferenceChangeListener { _, _ ->
+ val languagePreference: ATEListPreference? = findPreference("language_name")
+ languagePreference?.setOnPreferenceChangeListener { _, _ ->
requireActivity().recreate()
return@setOnPreferenceChangeListener true
}
@@ -40,9 +39,15 @@ class OtherSettingsFragment : AbsSettingsFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- val preference: Preference = findPreference("last_added_interval")!!
- setSummary(preference)
- val languagePreference: Preference = findPreference("language_name")!!
- setSummary(languagePreference)
+ val preference: Preference? = findPreference("last_added_interval")
+ preference?.setOnPreferenceChangeListener { lastAdded, newValue ->
+ setSummary(lastAdded, newValue)
+ true
+ }
+ val languagePreference: Preference? = findPreference("language_name")
+ languagePreference?.setOnPreferenceChangeListener { prefs, newValue ->
+ setSummary(prefs, newValue)
+ true
+ }
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
index bac4ba930..0a386b348 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt
@@ -14,21 +14,15 @@
package code.name.monkey.retromusic.fragments.settings
-import android.content.SharedPreferences
import android.os.Bundle
import android.view.View
-import androidx.preference.Preference
import androidx.preference.TwoStatePreference
-import code.name.monkey.retromusic.CAROUSEL_EFFECT
+import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEListPreference
import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.util.PreferenceUtilKT
-
-class PersonalizeSettingsFragment : AbsSettingsFragment(),
- SharedPreferences.OnSharedPreferenceChangeListener {
+class PersonalizeSettingsFragment : AbsSettingsFragment() {
override fun invalidateSettings() {
-
val toggleFullScreen: TwoStatePreference = findPreference("toggle_full_screen")!!
toggleFullScreen.setOnPreferenceChangeListener { _, _ ->
requireActivity().recreate()
@@ -42,22 +36,15 @@ class PersonalizeSettingsFragment : AbsSettingsFragment(),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- PreferenceUtilKT.registerOnSharedPreferenceChangedListener(this)
-
- var preference: Preference? = findPreference("home_artist_grid_style")
- setSummary(preference!!)
- preference = findPreference("tab_text_mode")
- setSummary(preference!!)
- }
-
- override fun onDestroyView() {
- super.onDestroyView()
- PreferenceUtilKT.unregisterOnSharedPreferenceChangedListener(this)
- }
-
- override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
- when (key) {
- CAROUSEL_EFFECT -> invalidateSettings()
+ val homeArtistStyle: ATEListPreference? = findPreference("home_artist_grid_style")
+ homeArtistStyle?.setOnPreferenceChangeListener { preference, newValue ->
+ setSummary(preference, newValue)
+ true
+ }
+ val tabTextMode: ATEListPreference? = findPreference("tab_text_mode")
+ tabTextMode?.setOnPreferenceChangeListener { prefs, newValue ->
+ setSummary(prefs, newValue)
+ true
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
index 7471850cc..6568aa741 100644
--- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/ThemeSettingsFragment.kt
@@ -18,8 +18,6 @@ import android.os.Build
import android.os.Bundle
import androidx.preference.Preference
import androidx.preference.TwoStatePreference
-import code.name.monkey.appthemehelper.ACCENT_COLORS
-import code.name.monkey.appthemehelper.ACCENT_COLORS_SUB
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEColorPreference
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATESwitchPreference
@@ -30,9 +28,7 @@ import code.name.monkey.retromusic.DESATURATED_COLOR
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
import code.name.monkey.retromusic.util.PreferenceUtilKT
-import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.color.colorChooser
-
+import com.afollestad.materialdialogs.color.ColorChooserDialog
/**
* @author Hemanth S (h4h13).
@@ -62,21 +58,12 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
accentColorPref.setColor(accentColor, ColorUtil.darkenColor(accentColor))
accentColorPref.setOnPreferenceClickListener {
- MaterialDialog(requireActivity()).show {
- title(R.string.accent_color)
- positiveButton(R.string.set)
- colorChooser(
- colors = ACCENT_COLORS,
- allowCustomArgb = true,
- subColors = ACCENT_COLORS_SUB
- ) { _, color ->
- ThemeStore.editTheme(requireContext()).accentColor(color).commit()
- if (VersionUtils.hasNougatMR())
- DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
-
- requireActivity().recreate()
- }
- }
+ ColorChooserDialog.Builder(requireContext(), R.string.accent_color)
+ .accentMode(true)
+ .allowUserColorInput(true)
+ .allowUserColorInputAlpha(false)
+ .preselect(accentColor)
+ .show(requireActivity())
return@setOnPreferenceClickListener true
}
val blackTheme: ATESwitchPreference? = findPreference("black_theme")
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumDetailsPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumDetailsPresenter.kt
index 8b53f370e..be7e64e4a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumDetailsPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumDetailsPresenter.kt
@@ -14,14 +14,16 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.model.Album
import code.name.monkey.retromusic.model.Artist
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
import code.name.monkey.retromusic.rest.model.LastFmAlbum
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -57,19 +59,15 @@ interface AlbumDetailsPresenter : Presenter {
override fun loadMore(artistId: Int) {
launch {
- when (val result = repository.artistById(artistId)) {
- is Success -> withContext(Dispatchers.Main) { showArtistImage(result.data) }
- is Error -> withContext(Dispatchers.Main) {}
- }
+ val result = repository.artistById(artistId)
+ showArtistImage(result)
}
}
override fun aboutAlbum(artist: String, album: String) {
launch {
- when (val result = repository.albumInfo(artist, album)) {
- is Success -> withContext(Dispatchers.Main) { view.aboutAlbum(result.data) }
- is Error -> withContext(Dispatchers.Main) {}
- }
+ val result = repository.albumInfo(artist, album)
+ view.aboutAlbum(result)
}
}
@@ -83,13 +81,10 @@ interface AlbumDetailsPresenter : Presenter {
override fun loadAlbum(albumId: Int) {
launch {
- when (val result = repository.albumById(albumId)) {
- is Success -> withContext(Dispatchers.Main) {
- album = result.data
- view?.album(result.data)
- }
- is Error -> withContext(Dispatchers.Main) { view?.complete() }
- }
+ val result = repository.albumById(albumId)
+ album = result
+ view?.album(result)
+
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumPresenter.kt
index 936fd44ba..0f97fde07 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumPresenter.kt
@@ -14,14 +14,15 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.model.Album
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -53,10 +54,8 @@ interface AlbumsPresenter : Presenter {
override fun loadAlbums() {
launch {
- when (val result = repository.allAlbums()) {
- is Success -> withContext(Dispatchers.Main) { view?.albums(result.data) }
- is Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val result = repository.allAlbums()
+ view?.albums(result)
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistDetailsPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistDetailsPresenter.kt
index 649df0946..4aa9d1d1e 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistDetailsPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistDetailsPresenter.kt
@@ -14,15 +14,16 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.model.Artist
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
import code.name.monkey.retromusic.rest.model.LastFmArtist
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import java.util.*
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -60,19 +61,15 @@ interface ArtistDetailsPresenter : Presenter {
override fun loadBiography(name: String, lang: String?, cache: String?) {
launch {
- when (val result = repository.artistInfo(name, lang, cache)) {
- is Success -> withContext(Dispatchers.Main) { view?.artistInfo(result.data) }
- is Error -> withContext(Dispatchers.Main) {}
- }
+ val result = repository.artistInfo(name, lang, cache)
+ view?.artistInfo(result)
}
}
override fun loadArtist(artistId: Int) {
launch {
- when (val result = repository.artistById(artistId)) {
- is Success -> withContext(Dispatchers.Main) { view?.artist(result.data) }
- is Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val result = repository.artistById(artistId)
+ view?.artist(result)
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistPresenter.kt
index 42a941da4..54a9481b2 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistPresenter.kt
@@ -14,14 +14,15 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.model.Artist
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -49,10 +50,8 @@ interface ArtistsPresenter : Presenter {
override fun loadArtists() {
launch {
- when (val result = repository.allArtists()) {
- is Success -> withContext(Dispatchers.Main) { view?.artists(result.data) }
- is Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val result = repository.allArtists()
+ view?.artists(result)
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenreDetailsPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenreDetailsPresenter.kt
index ed6641553..3db4517e6 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenreDetailsPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenreDetailsPresenter.kt
@@ -14,14 +14,15 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -53,10 +54,8 @@ interface GenreDetailsPresenter : Presenter {
override fun loadGenreSongs(genreId: Int) {
launch {
- when (val result = repository.getGenre(genreId)) {
- is Success -> withContext(Dispatchers.Main) { view?.songs(result.data) }
- is Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val result = repository.getGenre(genreId)
+ view?.songs(result)
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenrePresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenrePresenter.kt
index 50f0722c8..f1908e435 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenrePresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenrePresenter.kt
@@ -14,14 +14,15 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.model.Genre
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -52,10 +53,8 @@ interface GenresPresenter : Presenter {
override fun loadGenres() {
launch {
- when (val result = repository.allGenres()) {
- is Success -> withContext(Dispatchers.Main) { view?.genres(result.data) }
- is Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val result = repository.allGenres()
+ view?.genres(result)
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/HomePresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/HomePresenter.kt
index 1bdf66e92..8ea312d8a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/HomePresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/HomePresenter.kt
@@ -14,7 +14,6 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result
import code.name.monkey.retromusic.model.Home
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
@@ -56,9 +55,7 @@ interface HomePresenter : Presenter {
repository.favoritePlaylist()
)
for (r in recentArtistResult) {
- when (r) {
- is Result.Success -> list.add(r.data)
- }
+ r?.let { list.add(it) }
}
withContext(Dispatchers.Main) {
if (list.isNotEmpty()) view?.sections(list) else view?.showEmptyView()
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistPresenter.kt
index dcd8d921b..ce1ab4568 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistPresenter.kt
@@ -14,13 +14,15 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result
import code.name.monkey.retromusic.model.Playlist
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -53,10 +55,8 @@ interface PlaylistsPresenter : Presenter {
override fun playlists() {
launch {
- when (val result = repository.allPlaylists()) {
- is Result.Success -> withContext(Dispatchers.Main) { view?.playlists(result.data) }
- is Result.Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val result = repository.allPlaylists()
+ view?.playlists(result)
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistSongsPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistSongsPresenter.kt
index d02bc52ab..494e0d66f 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistSongsPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistSongsPresenter.kt
@@ -14,15 +14,16 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.model.Playlist
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -48,10 +49,8 @@ interface PlaylistSongsPresenter : Presenter {
override fun loadPlaylistSongs(playlist: Playlist) {
launch {
- when (val songs = repository.getPlaylistSongs(playlist)) {
- is Success -> withContext(Dispatchers.Main) { view?.songs(songs.data) }
- is Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val songs = repository.getPlaylistSongs(playlist)
+ view?.songs(songs)
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SearchPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SearchPresenter.kt
index b371cb7b2..3c6441a3f 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SearchPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SearchPresenter.kt
@@ -14,13 +14,14 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.mvp.BaseView
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -53,10 +54,8 @@ interface SearchPresenter : Presenter {
override fun search(query: String?) {
launch {
- when (val result = repository.search(query)) {
- is Success -> withContext(Dispatchers.Main) { view?.showData(result.data) }
- is Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val result = repository.search(query)
+ view?.showData(result)
}
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SongPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SongPresenter.kt
index ceb6b45c0..c837ca8d8 100644
--- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SongPresenter.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SongPresenter.kt
@@ -14,12 +14,14 @@
package code.name.monkey.retromusic.mvp.presenter
-import code.name.monkey.retromusic.Result
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.PresenterImpl
import code.name.monkey.retromusic.providers.interfaces.Repository
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -48,10 +50,8 @@ interface SongPresenter : Presenter {
override fun loadSongs() {
launch {
- when (val songs = repository.allSongs()) {
- is Result.Success -> withContext(Dispatchers.Main) { view?.songs(songs.data) }
- is Result.Error -> withContext(Dispatchers.Main) { view?.showEmptyView() }
- }
+ val songs = repository.allSongs()
+ view?.songs(songs)
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
index ef8004226..e43b778db 100644
--- a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt
@@ -16,7 +16,6 @@ package code.name.monkey.retromusic.preferences
import android.app.Dialog
import android.content.Context
-import android.content.DialogInterface
import android.os.Bundle
import android.util.AttributeSet
import androidx.core.graphics.BlendModeColorFilterCompat
diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/MaterialListPreference.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/MaterialListPreference.kt
index a2f2ca6b7..75c7e83ce 100644
--- a/app/src/main/java/code/name/monkey/retromusic/preferences/MaterialListPreference.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/preferences/MaterialListPreference.kt
@@ -23,13 +23,10 @@ import androidx.core.graphics.BlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat.SRC_IN
import androidx.preference.ListPreference
import androidx.preference.PreferenceDialogFragmentCompat
-import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.colorControlNormal
import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.WhichButton
-import com.afollestad.materialdialogs.actions.getActionButton
-import com.afollestad.materialdialogs.list.listItemsSingleChoice
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
class MaterialListPreference @JvmOverloads constructor(
context: Context,
@@ -72,30 +69,31 @@ class MaterialListPreferenceDialog : PreferenceDialogFragmentCompat() {
val entries = arguments?.getStringArrayList(EXTRA_ENTRIES)
val entriesValues = arguments?.getStringArrayList(EXTRA_ENTRIES_VALUES)
val position: Int = arguments?.getInt(EXTRA_POSITION) ?: 0
- materialDialog = MaterialDialog(requireContext())
- .title(text = materialListPreference.title.toString())
- .positiveButton(R.string.set)
- .listItemsSingleChoice(
- items = entries,
- initialSelection = position,
- waitForPositiveButton = true
- ) { _, index, _ ->
- entriesValues?.let {
- materialListPreference.callChangeListener(it[index])
- materialListPreference.setCustomValue(it[index])
- }
- entries?.let {
- materialListPreference.summary = it[index]
- val value = materialListPreference.entryValues[index].toString()
- if (materialListPreference.callChangeListener(value)) {
- materialListPreference.value = value
- }
- }
- dismiss()
- }
- materialDialog.getActionButton(WhichButton.POSITIVE)
- .updateTextColor(ThemeStore.accentColor(requireContext()))
- return materialDialog
+ /* materialDialog = MaterialDialog(requireContext())
+ .title(text = materialListPreference.title.toString())
+ .positiveButton(R.string.set)
+ .listItemsSingleChoice(
+ items = entries,
+ initialSelection = position,
+ waitForPositiveButton = true
+ ) { _, index, _ ->
+ entriesValues?.let {
+ materialListPreference.callChangeListener(it[index])
+ materialListPreference.setCustomValue(it[index])
+ }
+ entries?.let {
+ materialListPreference.summary = it[index]
+ val value = materialListPreference.entryValues[index].toString()
+ if (materialListPreference.callChangeListener(value)) {
+ materialListPreference.value = value
+ }
+ }
+ dismiss()
+ }
+ materialDialog.getActionButton(WhichButton.POSITIVE)
+ .updateTextColor(ThemeStore.accentColor(requireContext()))
+ return materialDialog*/
+ return MaterialAlertDialogBuilder(requireContext()).create()
}
override fun onDestroyView() {
diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt
index e54cd5d01..9f60056f7 100644
--- a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt
@@ -16,9 +16,6 @@ package code.name.monkey.retromusic.providers
import android.content.Context
import code.name.monkey.retromusic.R
-import code.name.monkey.retromusic.Result
-import code.name.monkey.retromusic.Result.Error
-import code.name.monkey.retromusic.Result.Success
import code.name.monkey.retromusic.adapter.HomeAdapter
import code.name.monkey.retromusic.loaders.*
import code.name.monkey.retromusic.model.*
@@ -26,268 +23,114 @@ import code.name.monkey.retromusic.providers.interfaces.Repository
import code.name.monkey.retromusic.rest.LastFmClient
import code.name.monkey.retromusic.rest.model.LastFmAlbum
import code.name.monkey.retromusic.rest.model.LastFmArtist
-import java.io.IOException
import javax.inject.Inject
class RepositoryImpl @Inject constructor(private val context: Context) : Repository {
- override suspend fun allAlbums(): Result> {
- return try {
- val albums = AlbumLoader.getAllAlbums(context)
- if (albums.isNotEmpty()) {
- Success(albums)
- } else {
- Error(Throwable("No items found"))
- }
- } catch (e: Exception) {
- Error(e)
+ override suspend fun allAlbums(): List = AlbumLoader.getAllAlbums(context)
+
+ override suspend fun allArtists(): List = ArtistLoader.getAllArtists(context)
+
+ override suspend fun allPlaylists(): List = PlaylistLoader.getAllPlaylists(context)
+
+ override suspend fun allGenres(): List = GenreLoader.getAllGenres(context)
+
+ override suspend fun allSongs(): List = SongLoader.getAllSongs(context)
+
+ override suspend fun albumById(albumId: Int): Album = AlbumLoader.getAlbum(context, albumId)
+
+ override suspend fun artistById(artistId: Int): Artist =
+ ArtistLoader.getArtist(context, artistId)
+
+ override suspend fun search(query: String?): MutableList =
+ SearchLoader.searchAll(context, query)
+
+ override suspend fun getPlaylistSongs(playlist: Playlist): ArrayList {
+ return if (playlist is AbsCustomPlaylist) {
+ playlist.getSongs(context)
+ } else {
+ PlaylistSongsLoader.getPlaylistSongList(context, playlist.id)
}
}
- override suspend fun albumById(albumId: Int): Result {
- return try {
- val album = AlbumLoader.getAlbum(context, albumId)
- if (album != null) {
- Success(album)
- } else {
- Error(Throwable("No album"))
- }
- } catch (e: Exception) {
- Error(e)
- }
+ override suspend fun getGenre(genreId: Int): ArrayList =
+ GenreLoader.getSongs(context, genreId)
+
+ override suspend fun recentArtists(): Home? {
+ val artists = LastAddedSongsLoader.getLastAddedArtists(context)
+ return if (artists.isNotEmpty()) Home(
+ 0,
+ R.string.recent_artists,
+ artists,
+ HomeAdapter.RECENT_ARTISTS,
+ R.drawable.ic_artist_white_24dp
+ ) else null
}
- override suspend fun allArtists(): Result> {
- return try {
- val artists = ArtistLoader.getAllArtists(context)
- if (artists.isNotEmpty()) {
- Success(artists)
- } else {
- Error(Throwable("No items found"))
- }
- } catch (e: Exception) {
- Error(e)
- }
+ override suspend fun recentAlbums(): Home? {
+ val albums = LastAddedSongsLoader.getLastAddedAlbums(context)
+ return if (albums.isNotEmpty()) {
+ Home(
+ 1,
+ R.string.recent_albums,
+ albums,
+ HomeAdapter.RECENT_ALBUMS,
+ R.drawable.ic_album_white_24dp
+ )
+ } else null
}
- override suspend fun allPlaylists(): Result> {
- return try {
- val playlists = PlaylistLoader.getAllPlaylists(context)
- if (playlists.isNotEmpty()) {
- Success(playlists)
- } else {
- Error(Throwable("No items found"))
- }
- } catch (e: Exception) {
- Error(e)
- }
+ override suspend fun topAlbums(): Home? {
+ val albums = TopAndRecentlyPlayedTracksLoader.getTopAlbums(context)
+ return if (albums.isNotEmpty()) {
+ Home(
+ 3,
+ R.string.top_albums,
+ albums,
+ HomeAdapter.TOP_ALBUMS,
+ R.drawable.ic_album_white_24dp
+ )
+ } else null
}
- override suspend fun allGenres(): Result> {
- return try {
- val genres = GenreLoader.getAllGenres(context)
- if (genres.isNotEmpty()) {
- Success(genres)
- } else {
- Error(Throwable("No items found"))
- }
- } catch (e: Exception) {
- Error(e)
- }
+ override suspend fun topArtists(): Home? {
+
+ val artists = TopAndRecentlyPlayedTracksLoader.getTopArtists(context)
+ return if (artists.isNotEmpty()) {
+ Home(
+ 2,
+ R.string.top_artists,
+ artists,
+ HomeAdapter.TOP_ARTISTS,
+ R.drawable.ic_artist_white_24dp
+ )
+ } else null
+
}
- override suspend fun search(query: String?): Result> {
- return try {
- val result = SearchLoader.searchAll(context, query)
- if (result.isNotEmpty()) {
- Success(result)
- } else {
- Error(Throwable("No items found"))
- }
- } catch (e: Exception) {
- Error(e)
- }
- }
-
- override suspend fun allSongs(): Result> {
- return try {
- val songs = SongLoader.getAllSongs(context)
- if (songs.isEmpty()) {
- Error(Throwable("No items found"))
- } else {
- Success(songs)
- }
- } catch (e: Exception) {
- Error(e)
- }
- }
-
- override suspend fun getPlaylistSongs(playlist: Playlist): Result> {
- return try {
- val songs: ArrayList = if (playlist is AbsCustomPlaylist) {
- playlist.getSongs(context)
- } else {
- PlaylistSongsLoader.getPlaylistSongList(context, playlist.id)
- }
- Success(songs)
- } catch (e: Exception) {
- Error(e)
- }
- }
-
- override suspend fun getGenre(genreId: Int): Result> {
- return try {
- val songs = GenreLoader.getSongs(context, genreId)
- if (songs.isEmpty()) {
- Error(Throwable("No items found"))
- } else {
- Success(songs)
- }
- } catch (e: Exception) {
- Error(e)
- }
- }
-
- override suspend fun recentArtists(): Result {
- return try {
- val artists = LastAddedSongsLoader.getLastAddedArtists(context)
- if (artists.isEmpty()) {
- Error(Throwable("No items found"))
- } else {
- Success(
- Home(
- 0,
- R.string.recent_artists,
- artists,
- HomeAdapter.RECENT_ARTISTS,
- R.drawable.ic_artist_white_24dp
- )
- )
- }
- } catch (e: Exception) {
- Error(e)
- }
- }
-
- override suspend fun recentAlbums(): Result {
- return try {
- val albums = LastAddedSongsLoader.getLastAddedAlbums(context)
- if (albums.isEmpty()) {
- Error(Throwable("No items found"))
- } else {
- Success(
- Home(
- 1,
- R.string.recent_albums,
- albums,
- HomeAdapter.RECENT_ALBUMS,
- R.drawable.ic_album_white_24dp
- )
- )
- }
- } catch (e: Exception) {
- Error(e)
- }
- }
-
- override suspend fun topAlbums(): Result {
- return try {
- val albums = TopAndRecentlyPlayedTracksLoader.getTopAlbums(context)
- if (albums.isEmpty()) {
- Error(Throwable("No items found"))
- } else {
- Success(
- Home(
- 3,
- R.string.top_albums,
- albums,
- HomeAdapter.TOP_ALBUMS,
- R.drawable.ic_album_white_24dp
- )
- )
- }
- } catch (e: Exception) {
- Error(e)
- }
- }
-
- override suspend fun topArtists(): Result {
- return try {
- val artists = TopAndRecentlyPlayedTracksLoader.getTopArtists(context)
- if (artists.isEmpty()) {
- Error(Throwable("No items found"))
- } else {
- Success(
- Home(
- 2,
- R.string.top_artists,
- artists,
- HomeAdapter.TOP_ARTISTS,
- R.drawable.ic_artist_white_24dp
- )
- )
- }
- } catch (e: Exception) {
- Error(e)
- }
- }
-
- override suspend fun favoritePlaylist(): Result {
- return try {
- val playlists = PlaylistLoader.getFavoritePlaylist(context)
- if (playlists.isEmpty()) {
- Error(Throwable("No items found"))
- } else {
- Success(
- Home(
- 4,
- R.string.favorites,
- playlists,
- HomeAdapter.PLAYLISTS,
- R.drawable.ic_favorite_white_24dp
- )
- )
- }
- } catch (e: Exception) {
- Error(e)
- }
+ override suspend fun favoritePlaylist(): Home? {
+ val playlists = PlaylistLoader.getFavoritePlaylist(context)
+ return if (playlists.isNotEmpty()) {
+ Home(
+ 4,
+ R.string.favorites,
+ playlists,
+ HomeAdapter.PLAYLISTS,
+ R.drawable.ic_favorite_white_24dp
+ )
+ } else null
}
override suspend fun artistInfo(
name: String,
lang: String?,
cache: String?
- ): Result = safeApiCall(
- call = {
- Success(LastFmClient.getApiService().artistInfo(name, lang, cache))
- },
- errorMessage = "Error"
+ ): LastFmArtist = LastFmClient.getApiService().artistInfo(name, lang, cache)
- )
override suspend fun albumInfo(
artist: String,
album: String
- ): Result = safeApiCall(
- call = {
- Success(LastFmClient.getApiService().albumInfo(artist, album))
- },
- errorMessage = "Error"
- )
+ ): LastFmAlbum = LastFmClient.getApiService().albumInfo(artist, album)
- override suspend fun artistById(artistId: Int): Result {
- return try {
- val artist = ArtistLoader.getArtist(context, artistId)
- return Success(artist)
- } catch (e: Exception) {
- Error(Throwable("Error loading artist"))
- }
- }
-}
-
-suspend fun safeApiCall(call: suspend () -> Result, errorMessage: String): Result =
- try {
- call.invoke()
- } catch (e: Exception) {
- Error(IOException(errorMessage, e))
- }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt b/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt
index a3e9f4d80..a3b613419 100644
--- a/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt
@@ -14,7 +14,6 @@
package code.name.monkey.retromusic.providers.interfaces
-import code.name.monkey.retromusic.Result
import code.name.monkey.retromusic.model.*
import code.name.monkey.retromusic.rest.model.LastFmAlbum
import code.name.monkey.retromusic.rest.model.LastFmArtist
@@ -25,37 +24,37 @@ import code.name.monkey.retromusic.rest.model.LastFmArtist
interface Repository {
- suspend fun allAlbums(): Result>
+ suspend fun allAlbums(): List
- suspend fun albumById(albumId: Int): Result
+ suspend fun albumById(albumId: Int): Album
- suspend fun allSongs(): Result>
+ suspend fun allSongs(): List
- suspend fun allArtists(): Result>
+ suspend fun allArtists(): List
- suspend fun allPlaylists(): Result>
+ suspend fun allPlaylists(): List
- suspend fun allGenres(): Result>
+ suspend fun allGenres(): List
- suspend fun search(query: String?): Result>
+ suspend fun search(query: String?): MutableList
- suspend fun getPlaylistSongs(playlist: Playlist): Result>
+ suspend fun getPlaylistSongs(playlist: Playlist): ArrayList
- suspend fun getGenre(genreId: Int): Result>
+ suspend fun getGenre(genreId: Int): ArrayList
- suspend fun recentArtists(): Result
+ suspend fun recentArtists(): Home?
- suspend fun topArtists(): Result
+ suspend fun topArtists(): Home?
- suspend fun topAlbums(): Result
+ suspend fun topAlbums(): Home?
- suspend fun recentAlbums(): Result
+ suspend fun recentAlbums(): Home?
- suspend fun favoritePlaylist(): Result
+ suspend fun favoritePlaylist(): Home?
- suspend fun artistInfo(name: String, lang: String?, cache: String?): Result
+ suspend fun artistInfo(name: String, lang: String?, cache: String?): LastFmArtist
- suspend fun albumInfo(artist: String, album: String): Result
+ suspend fun albumInfo(artist: String, album: String): LastFmAlbum
- suspend fun artistById(artistId: Int): Result
+ suspend fun artistById(artistId: Int): Artist
}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/AppRater.kt b/app/src/main/java/code/name/monkey/retromusic/util/AppRater.kt
index 4c31a4a4f..3f06af688 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/AppRater.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/AppRater.kt
@@ -17,12 +17,9 @@ package code.name.monkey.retromusic.util
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
-import android.graphics.Color
import android.net.Uri
import code.name.monkey.retromusic.R
-import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.WhichButton
-import com.afollestad.materialdialogs.actions.getActionButton
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
object AppRater {
private const val DO_NOT_SHOW_AGAIN = "do_not_show_again"// Package Name
@@ -64,30 +61,24 @@ object AppRater {
}
private fun showRateDialog(context: Context, editor: SharedPreferences.Editor) {
- MaterialDialog(context)
- .show {
- title(text = "Rate this App")
- message(text = "If you enjoy using Retro Music, please take a moment to rate it. Thanks for your support!")
- positiveButton(R.string.app_name) {
- context.startActivity(
- Intent(
- Intent.ACTION_VIEW,
- Uri.parse("market://details?id=${context.packageName}")
- )
+ MaterialAlertDialogBuilder(context)
+ .setTitle("Rate this App")
+ .setMessage("If you enjoy using Retro Music, please take a moment to rate it. Thanks for your support!")
+ .setPositiveButton(R.string.app_name) { _, _ ->
+ context.startActivity(
+ Intent(
+ Intent.ACTION_VIEW,
+ Uri.parse("market://details?id=${context.packageName}")
)
- editor.putBoolean(DO_NOT_SHOW_AGAIN, true)
- editor.commit()
- dismiss()
- }
- negativeButton(text = "Later") {
- dismiss()
- }
- neutralButton(text = " No thanks") {
- editor.putBoolean(DO_NOT_SHOW_AGAIN, true)
- editor.commit()
- dismiss()
- }
- getActionButton(WhichButton.POSITIVE).updateTextColor(Color.RED)
+ )
+ editor.putBoolean(DO_NOT_SHOW_AGAIN, true)
+ editor.commit()
}
+ .setNeutralButton("Not now", null)
+ .setNegativeButton("No thanks") { _, _ ->
+ editor.putBoolean(DO_NOT_SHOW_AGAIN, true)
+ editor.commit()
+ }
+ .show()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java
index 416d194f5..eb32f35b5 100755
--- a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java
+++ b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java
@@ -29,7 +29,7 @@ import org.jetbrains.annotations.NotNull;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.activities.AboutActivity;
-import code.name.monkey.retromusic.activities.AlbumDetailsActivity;
+import code.name.monkey.retromusic.activities.albums.AlbumDetailsActivity;
import code.name.monkey.retromusic.activities.ArtistDetailActivity;
import code.name.monkey.retromusic.activities.DriveModeActivity;
import code.name.monkey.retromusic.activities.GenreDetailsActivity;
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt b/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt
index 6d99d0bb0..00052977a 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/util/RingtoneManager.kt
@@ -23,10 +23,11 @@ import android.provider.BaseColumns
import android.provider.MediaStore
import android.provider.Settings
import android.widget.Toast
+import androidx.appcompat.app.AlertDialog
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.util.MusicUtil.getSongFileUri
-import com.afollestad.materialdialogs.MaterialDialog
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
class RingtoneManager(val context: Context) {
fun setRingtone(song: Song) {
@@ -72,17 +73,17 @@ class RingtoneManager(val context: Context) {
return false
}
- fun getDialog(context: Context): MaterialDialog {
- return MaterialDialog(context).show {
- title(R.string.dialog_title_set_ringtone)
- message(R.string.dialog_message_set_ringtone)
- positiveButton(android.R.string.ok) {
+ fun getDialog(context: Context): AlertDialog {
+ return MaterialAlertDialogBuilder(context)
+ .setTitle(R.string.dialog_title_set_ringtone)
+ .setMessage(R.string.dialog_message_set_ringtone)
+ .setPositiveButton(android.R.string.ok) { _, _ ->
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
intent.data = Uri.parse("package:" + context.applicationContext.packageName)
context.startActivity(intent)
}
- negativeButton(android.R.string.cancel)
- }
+ .setNegativeButton(android.R.string.cancel, null)
+ .create()
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_guitar_acoustic_white_24dp.xml b/app/src/main/res/drawable/ic_guitar_acoustic_white_24dp.xml
deleted file mode 100644
index ee5d963b3..000000000
--- a/app/src/main/res/drawable/ic_guitar_acoustic_white_24dp.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_guitar_white_24dp.xml b/app/src/main/res/drawable/ic_guitar_white_24dp.xml
index 78369f653..7e0174a5c 100644
--- a/app/src/main/res/drawable/ic_guitar_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_guitar_white_24dp.xml
@@ -15,13 +15,10 @@
+ android:viewportWidth="24"
+ android:viewportHeight="24">
-
+ android:pathData="M19.59,3H22V5H20.41L16.17,9.24C15.8,8.68 15.32,8.2 14.76,7.83L19.59,3M12,8A4,4 0 0,1 16,12C16,13.82 14.77,15.42 13,15.87V16A5,5 0 0,1 8,21A5,5 0 0,1 3,16A5,5 0 0,1 8,11H8.13C8.58,9.24 10.17,8 12,8M12,10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 12,10.5M6.94,14.24L6.23,14.94L9.06,17.77L9.77,17.06L6.94,14.24Z" />
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_album.xml b/app/src/main/res/layout-land/activity_album.xml
index da7fd961a..7402e4522 100644
--- a/app/src/main/res/layout-land/activity_album.xml
+++ b/app/src/main/res/layout-land/activity_album.xml
@@ -48,7 +48,7 @@
android:layout_marginEnd="16dp"
android:transitionName="@string/transition_album_art"
app:cardCornerRadius="24dp"
- app:cardElevation="8dp"
+ app:cardElevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/container"
app:layout_constraintHorizontal_bias="0.5"
diff --git a/app/src/main/res/layout-land/activity_artist_details.xml b/app/src/main/res/layout-land/activity_artist_details.xml
index ff340527e..3f62c2eef 100644
--- a/app/src/main/res/layout-land/activity_artist_details.xml
+++ b/app/src/main/res/layout-land/activity_artist_details.xml
@@ -48,7 +48,7 @@
android:layout_marginEnd="16dp"
android:transitionName="@string/transition_artist_image"
app:cardCornerRadius="24dp"
- app:cardElevation="8dp"
+ app:cardElevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/container"
app:layout_constraintHorizontal_bias="0.5"
diff --git a/app/src/main/res/layout-land/pager_item.xml b/app/src/main/res/layout-land/pager_item.xml
index 02c76dd95..9dac9266c 100644
--- a/app/src/main/res/layout-land/pager_item.xml
+++ b/app/src/main/res/layout-land/pager_item.xml
@@ -13,7 +13,8 @@
android:layout_width="match_parent"
android:layout_height="156dp"
android:layout_margin="8dp"
- app:cardCornerRadius="16dp">
+ app:cardCornerRadius="16dp"
+ app:cardElevation="0dp">
+ app:cardCornerRadius="16dp"
+ app:cardElevation="0dp">
diff --git a/app/src/main/res/layout/activity_album.xml b/app/src/main/res/layout/activity_album.xml
index d15929a7d..cacb70676 100755
--- a/app/src/main/res/layout/activity_album.xml
+++ b/app/src/main/res/layout/activity_album.xml
@@ -64,7 +64,7 @@
android:layout_marginEnd="16dp"
android:transitionName="@string/transition_album_art"
app:cardCornerRadius="24dp"
- app:cardElevation="8dp"
+ app:cardElevation="0dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/activity_artist_details.xml b/app/src/main/res/layout/activity_artist_details.xml
index 72edc1233..fdbad70ce 100755
--- a/app/src/main/res/layout/activity_artist_details.xml
+++ b/app/src/main/res/layout/activity_artist_details.xml
@@ -63,7 +63,7 @@
android:layout_marginEnd="16dp"
android:transitionName="@string/transition_artist_image"
app:cardCornerRadius="24dp"
- app:cardElevation="8dp"
+ app:cardElevation="0dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -74,7 +74,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
- tools:srcCompat="@tools:sample/backgrounds/scenic[16]" />
+ tools:srcCompat="@tools:sample/backgrounds/scenic" />
@@ -94,7 +94,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/artistCoverContainer"
tools:ignore="MissingPrefix"
- tools:text="Title" />
+ tools:text="@tools:sample/full_names" />
+ tools:text="@tools:sample/full_names" />
+ android:layout_margin="4dp"
+ app:cardCornerRadius="@dimen/about_card_radius">
-
+ app:layout_constraintTop_toBottomOf="@+id/sb1"
+ tools:itemCount="3"
+ tools:listitem="@layout/item_contributor" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/card_other.xml b/app/src/main/res/layout/card_other.xml
index b21e81d70..2900a941a 100644
--- a/app/src/main/res/layout/card_other.xml
+++ b/app/src/main/res/layout/card_other.xml
@@ -3,8 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- app:cardCornerRadius="@dimen/about_card_radius"
- app:cardUseCompatPadding="true">
+ android:layout_margin="4dp"
+ app:cardCornerRadius="@dimen/about_card_radius">
+ android:layout_margin="4dp"
+ app:cardCornerRadius="@dimen/about_card_radius">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_album_card.xml b/app/src/main/res/layout/item_album_card.xml
index 6259691ba..12bf7fbc9 100644
--- a/app/src/main/res/layout/item_album_card.xml
+++ b/app/src/main/res/layout/item_album_card.xml
@@ -12,8 +12,8 @@
android:layout_width="112dp"
android:layout_height="156dp"
android:layout_margin="8dp"
- app:cardCornerRadius="8dp"
- app:cardElevation="4dp"
+ app:cardCornerRadius="12dp"
+ app:cardElevation="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -41,5 +41,5 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageContainer"
tools:ignore="MissingPrefix"
- tools:text="@tools:sample/lorem/random" />
+ tools:text="@tools:sample/full_names" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_artist_card.xml b/app/src/main/res/layout/item_artist_card.xml
index f0558b04b..69d61f442 100644
--- a/app/src/main/res/layout/item_artist_card.xml
+++ b/app/src/main/res/layout/item_artist_card.xml
@@ -17,7 +17,8 @@
android:layout_width="128dp"
android:layout_height="128dp"
android:layout_margin="4dp"
- app:cardCornerRadius="16dp">
+ app:cardCornerRadius="16dp"
+ app:cardElevation="0dp">
+ app:cardElevation="0dp">
+ tools:srcCompat="@tools:sample/backgrounds/scenic" />
+ tools:text="@tools:sample/lorem/random" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_donation_option.xml b/app/src/main/res/layout/item_donation_option.xml
index d85ce0543..6d17dd960 100644
--- a/app/src/main/res/layout/item_donation_option.xml
+++ b/app/src/main/res/layout/item_donation_option.xml
@@ -10,6 +10,7 @@
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:cardCornerRadius="8dp"
+ app:cardElevation="0dp"
app:contentPadding="12dp">
+ app:cardCornerRadius="6dp"
+ app:cardElevation="0dp">
@@ -63,11 +64,11 @@
android:ellipsize="end"
android:maxLines="1"
android:paddingStart="16dp"
- app:layout_constraintStart_toStartOf="parent"
android:paddingEnd="8dp"
android:textAppearance="@style/TextViewSubtitle1"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/text"
tools:ignore="MissingPrefix"
tools:text="@tools:sample/full_names" />
diff --git a/app/src/main/res/layout/preference_category_title.xml b/app/src/main/res/layout/preference_category_title.xml
index 4a7563f71..cdbefb6fb 100644
--- a/app/src/main/res/layout/preference_category_title.xml
+++ b/app/src/main/res/layout/preference_category_title.xml
@@ -25,5 +25,5 @@
android:paddingTop="16dp"
android:paddingEnd="16dp"
android:textAppearance="@style/TextViewOverline"
- tools:text="@string/about_settings_summary" />
+ tools:text="@tools:sample/full_names" />
\ No newline at end of file
diff --git a/app/src/main/res/values-v27/styles_parents.xml b/app/src/main/res/values-v27/styles_parents.xml
index a6fca6f59..ca42d0971 100644
--- a/app/src/main/res/values-v27/styles_parents.xml
+++ b/app/src/main/res/values-v27/styles_parents.xml
@@ -32,7 +32,6 @@
-
+
@@ -192,6 +192,7 @@
- @font/google_san
+
diff --git a/app/src/main/res/xml/pref_advanced.xml b/app/src/main/res/xml/pref_advanced.xml
index 490cc5f17..643cbcefc 100755
--- a/app/src/main/res/xml/pref_advanced.xml
+++ b/app/src/main/res/xml/pref_advanced.xml
@@ -70,7 +70,7 @@
app:showSeekBarValue="true" />
-
-
diff --git a/app/src/main/res/xml/pref_images.xml b/app/src/main/res/xml/pref_images.xml
index b2dc9d11f..0ed214643 100755
--- a/app/src/main/res/xml/pref_images.xml
+++ b/app/src/main/res/xml/pref_images.xml
@@ -10,7 +10,7 @@
android:title="@string/pref_title_ignore_media_store_artwork"
app:icon="@drawable/ic_image_white_24dp" />
-
-
-
- {
- mClickedDialogEntryIndex = i;
+ builder.setSingleChoiceItems(preference.getEntries(), mClickedDialogEntryIndex, (dialog, which) -> {
+ mClickedDialogEntryIndex = which;
+ onClick(dialog, which);
+ dismiss();
});
- builder.setPositiveButton("Ok", null);
- builder.setNegativeButton("", null);
- builder.setNeutralButton("", null);
+ /*
+ * The typical interaction for list-based dialogs is to have
+ * click-on-an-item dismiss the dialog instead of the user having to
+ * press 'Ok'.
+ */
+ builder.setPositiveButton(null, null);
+ builder.setNegativeButton(null, null);
+ builder.setNeutralButton(null, null);
}
@Override
public void onDialogClosed(boolean positiveResult) {
final ListPreference preference = getListPreference();
+ Log.i(TAG, "onDialogClosed: " + positiveResult);
if (positiveResult && mClickedDialogEntryIndex >= 0 &&
preference.getEntryValues() != null) {
String value = preference.getEntryValues()[mClickedDialogEntryIndex].toString();
+ Log.i(TAG, "onDialogClosed: value " + value);
if (preference.callChangeListener(value)) {
preference.setValue(value);
+ Log.i(TAG, "onDialogClosed: set value ");
}
}
}
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Log.i(TAG, "onClick: " + which);
+ mClickedDialogEntryIndex = which;
+ super.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
+ }
}
\ No newline at end of file
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java
index 2f886215f..2fb36a80c 100644
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/dialogs/ATEPreferenceDialogFragment.java
@@ -14,16 +14,17 @@
package code.name.monkey.appthemehelper.common.prefs.supportv7.dialogs;
-
import android.app.Dialog;
+import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import android.view.Window;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import androidx.preference.DialogPreference;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -33,10 +34,10 @@ import code.name.monkey.appthemehelper.R;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
-public class ATEPreferenceDialogFragment extends DialogFragment {
-
- static final String ARG_KEY = "key";
-
+public class ATEPreferenceDialogFragment extends DialogFragment implements DialogInterface.OnClickListener {
+ protected static final String ARG_KEY = "key";
+ private static final String TAG = "ATEPreferenceDialog";
+ private int mWhichButtonClicked;
private DialogPreference mPreference;
public static ATEPreferenceDialogFragment newInstance(String key) {
@@ -59,34 +60,27 @@ public class ATEPreferenceDialogFragment extends DialogFragment {
}
}
- public DialogPreference getPreference() {
- return this.mPreference;
- }
-
@NonNull
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- MaterialAlertDialogBuilder materialDialog = new MaterialAlertDialogBuilder(requireActivity(),
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ FragmentActivity context = this.getActivity();
+ MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context,
R.style.ThemeOverlay_MaterialComponents_Dialog_Alert)
- .setTitle(mPreference.getTitle())
- .setIcon(mPreference.getIcon())
- .setMessage(mPreference.getDialogMessage())
- .setPositiveButton(mPreference.getPositiveButtonText(), (dialogInterface, i) -> {
- onDialogClosed(true);
- })
- .setNegativeButton(mPreference.getNegativeButtonText(), (dialogInterface, i) -> {
- onDialogClosed(false);
- });
+ .setTitle(this.mPreference.getDialogTitle())
+ .setIcon(this.mPreference.getDialogIcon())
+ .setMessage(this.mPreference.getDialogMessage())
+ .setPositiveButton(this.mPreference.getPositiveButtonText(), this)
+ .setNegativeButton(this.mPreference.getNegativeButtonText(), this);
- //this.onPrepareDialogBuilder(materialDialog);
- AlertDialog dialog = materialDialog.create();
+ this.onPrepareDialogBuilder(builder);
+ AlertDialog dialog = builder.create();
if (this.needInputMethod()) {
this.requestInputMethod(dialog);
}
return dialog;
}
- public void onDialogClosed(boolean positiveResult) {
-
+ public DialogPreference getPreference() {
+ return this.mPreference;
}
protected void onPrepareDialogBuilder(MaterialAlertDialogBuilder builder) {
@@ -100,4 +94,22 @@ public class ATEPreferenceDialogFragment extends DialogFragment {
Window window = dialog.getWindow();
window.setSoftInputMode(5);
}
+
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ super.onDismiss(dialog);
+ Log.i(TAG, "onDismiss: " + mWhichButtonClicked);
+ onDialogClosed(mWhichButtonClicked == DialogInterface.BUTTON_POSITIVE);
+ }
+
+ public void onDialogClosed(boolean positiveResult) {
+
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Log.i(TAG, "onClick: " + which);
+ mWhichButtonClicked = which;
+ onDialogClosed(which == DialogInterface.BUTTON_POSITIVE);
+ }
}
\ No newline at end of file
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialDialogsUtil.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialDialogsUtil.kt
new file mode 100644
index 000000000..5d2f38816
--- /dev/null
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialDialogsUtil.kt
@@ -0,0 +1,25 @@
+package code.name.monkey.appthemehelper.util
+
+import android.content.Context
+import android.content.res.ColorStateList
+import code.name.monkey.appthemehelper.ThemeStore
+import code.name.monkey.appthemehelper.util.ATHUtil.isWindowBackgroundDark
+import com.afollestad.materialdialogs.internal.ThemeSingleton
+
+/**
+ * @author Karim Abou Zeid (kabouzeid)
+ */
+object MaterialDialogsUtil {
+ fun updateMaterialDialogsThemeSingleton(context: Context) {
+ val md = ThemeSingleton.get()
+ md.titleColor = ThemeStore.textColorPrimary(context)
+ md.contentColor = ThemeStore.textColorSecondary(context)
+ md.itemColor = md.titleColor
+ md.widgetColor = ThemeStore.accentColor(context)
+ md.linkColor = ColorStateList.valueOf(md.widgetColor)
+ md.positiveColor = ColorStateList.valueOf(md.widgetColor)
+ md.neutralColor = ColorStateList.valueOf(md.widgetColor)
+ md.negativeColor = ColorStateList.valueOf(md.widgetColor)
+ md.darkTheme = isWindowBackgroundDark(context)
+ }
+}
\ No newline at end of file
diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialUtil.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialUtil.kt
index 388e3e376..4eca6ea19 100644
--- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialUtil.kt
+++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialUtil.kt
@@ -1,9 +1,7 @@
package code.name.monkey.appthemehelper.util
import android.content.res.ColorStateList
-import androidx.appcompat.widget.AppCompatButton
import code.name.monkey.appthemehelper.ThemeStore
-import com.afollestad.materialdialogs.internal.button.DialogActionButton
import com.google.android.material.button.MaterialButton
import com.google.android.material.textfield.TextInputLayout
@@ -54,30 +52,4 @@ object MaterialUtil {
textInputLayout.isHintAnimationEnabled = true
}
}
-
- @JvmOverloads
- @JvmStatic
- fun setTint(
- button: DialogActionButton,
- color: Int = ThemeStore.accentColor(button.context),
- background: Boolean = true
- ) {
- val temp = button as AppCompatButton
- val context = temp.context
- val colorState = ColorStateList.valueOf(color)
- val textColor =
- ColorStateList.valueOf(
- MaterialValueHelper.getPrimaryTextColor(
- context,
- ColorUtil.isColorLight(color)
- )
- )
-
- if (background) {
- temp.backgroundTintList = colorState
- temp.setTextColor(textColor)
- } else {
- temp.setTextColor(colorState)
- }
- }
}