diff --git a/app/src/main/java/code/name/monkey/retromusic/App.kt b/app/src/main/java/code/name/monkey/retromusic/App.kt index 7269a5a69..4d4bf4d00 100644 --- a/app/src/main/java/code/name/monkey/retromusic/App.kt +++ b/app/src/main/java/code/name/monkey/retromusic/App.kt @@ -15,13 +15,13 @@ package code.name.monkey.retromusic import android.app.Application -import android.widget.Toast import cat.ereza.customactivityoncrash.config.CaocConfig import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.Constants.PRO_VERSION_PRODUCT_ID import code.name.monkey.retromusic.activities.ErrorActivity import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.helper.WallpaperAccentManager import com.anjlab.android.iab.v3.BillingProcessor import com.anjlab.android.iab.v3.PurchaseInfo @@ -60,11 +60,7 @@ class App : Application() { override fun onProductPurchased(productId: String, details: PurchaseInfo?) {} override fun onPurchaseHistoryRestored() { - Toast.makeText( - this@App, - R.string.restored_previous_purchase_please_restart, - Toast.LENGTH_LONG - ).show() + showToast(R.string.restored_previous_purchase_please_restart) } override fun onBillingError(errorCode: Int, error: Throwable?) {} diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt index e4da0f4fb..85072735e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PurchaseActivity.kt @@ -19,8 +19,6 @@ import android.graphics.Color import android.os.Bundle import android.util.Log import android.view.MenuItem -import android.widget.Toast -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.MaterialUtil import code.name.monkey.retromusic.App import code.name.monkey.retromusic.BuildConfig @@ -31,6 +29,7 @@ import code.name.monkey.retromusic.databinding.ActivityProVersionBinding import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.setLightStatusBar import code.name.monkey.retromusic.extensions.setStatusBarColor +import code.name.monkey.retromusic.extensions.showToast import com.anjlab.android.iab.v3.BillingProcessor import com.anjlab.android.iab.v3.PurchaseInfo @@ -66,8 +65,7 @@ class PurchaseActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler { } private fun restorePurchase() { - Toast.makeText(this, R.string.restoring_purchase, Toast.LENGTH_SHORT) - .show() + showToast(R.string.restoring_purchase) billingProcessor.loadOwnedPurchasesFromGoogleAsync(object : BillingProcessor.IPurchasesResponseListener { override fun onPurchasesSuccess() { @@ -75,30 +73,22 @@ class PurchaseActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler { } override fun onPurchasesError() { - Toast.makeText( - this@PurchaseActivity, - R.string.could_not_restore_purchase, - Toast.LENGTH_SHORT - ).show() + showToast(R.string.could_not_restore_purchase) } }) } override fun onProductPurchased(productId: String, details: PurchaseInfo?) { - Toast.makeText(this, R.string.thank_you, Toast.LENGTH_SHORT).show() + showToast(R.string.thank_you) setResult(RESULT_OK) } override fun onPurchaseHistoryRestored() { if (App.isProVersion()) { - Toast.makeText( - this, - R.string.restored_previous_purchase_please_restart, - Toast.LENGTH_LONG - ).show() + showToast(R.string.restored_previous_purchase_please_restart) setResult(RESULT_OK) } else { - Toast.makeText(this, R.string.no_purchase_found, Toast.LENGTH_SHORT).show() + showToast(R.string.no_purchase_found) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt index c014c1381..511433043 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/SupportDevelopmentActivity.kt @@ -21,12 +21,10 @@ import android.view.LayoutInflater import android.view.MenuItem import android.view.ViewGroup import android.widget.TextView -import android.widget.Toast import androidx.core.view.isVisible import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -121,7 +119,7 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH override fun onProductPurchased(productId: String, details: PurchaseInfo?) { // loadSkuDetails(); - Toast.makeText(this, R.string.thank_you, Toast.LENGTH_SHORT).show() + showToast(R.string.thank_you) } override fun onBillingError(errorCode: Int, error: Throwable?) { @@ -130,7 +128,7 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH override fun onPurchaseHistoryRestored() { // loadSkuDetails(); - Toast.makeText(this, R.string.restored_previous_purchases, Toast.LENGTH_SHORT).show() + showToast(R.string.restored_previous_purchases) } override fun onDestroy() { 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 98ccc4356..68494eeea 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 @@ -20,7 +20,6 @@ import android.content.Intent import android.os.Bundle import android.view.MenuItem import android.view.inputmethod.EditorInfo -import android.widget.Toast import androidx.annotation.StringDef import androidx.annotation.StringRes import androidx.core.content.getSystemService @@ -39,6 +38,7 @@ import code.name.monkey.retromusic.activities.bugreport.model.github.GithubTarge import code.name.monkey.retromusic.databinding.ActivityBugReportBinding import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto +import code.name.monkey.retromusic.extensions.showToast import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.textfield.TextInputLayout @@ -163,11 +163,7 @@ open class BugReportActivity : AbsThemeActivity() { val clipboard = getSystemService() val clip = ClipData.newPlainText(getString(R.string.device_info), deviceInfo?.toMarkdown()) clipboard?.setPrimaryClip(clip) - Toast.makeText( - this@BugReportActivity, - R.string.copied_device_info_to_clipboard, - Toast.LENGTH_LONG - ).show() + showToast(R.string.copied_device_info_to_clipboard) } private fun validateInput(): Boolean { 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 40e03b8a3..8f30f8de3 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 @@ -30,10 +30,7 @@ import androidx.core.widget.doAfterTextChanged import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.ActivityAlbumTagEditorBinding -import code.name.monkey.retromusic.extensions.appHandleColor -import code.name.monkey.retromusic.extensions.defaultFooterColor -import code.name.monkey.retromusic.extensions.isColorLight -import code.name.monkey.retromusic.extensions.setTint +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper import code.name.monkey.retromusic.model.ArtworkInfo @@ -117,11 +114,7 @@ class AlbumTagEditorActivity : AbsTagEditorActivity override fun onLoadFailed(errorDrawable: Drawable?) { super.onLoadFailed(errorDrawable) - Toast.makeText(this@SongTagEditorActivity, "Load Failed", Toast.LENGTH_LONG) - .show() + showToast("Load Failed", Toast.LENGTH_LONG) } override fun setResource(resource: BitmapPaletteWrapper?) {} diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/TagWriter.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/TagWriter.kt index a78624583..e4cf7fe89 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/TagWriter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/TagWriter.kt @@ -6,8 +6,8 @@ import android.graphics.Bitmap import android.media.MediaScannerConnection import android.os.Build import android.util.Log -import android.widget.Toast import androidx.annotation.RequiresApi +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.misc.UpdateToastMediaScannerCompletionListener import code.name.monkey.retromusic.model.AudioTagInfo import code.name.monkey.retromusic.util.MusicUtil.createAlbumArtFile @@ -24,7 +24,6 @@ import org.jaudiotagger.tag.TagException import org.jaudiotagger.tag.images.AndroidArtwork import org.jaudiotagger.tag.images.Artwork import java.io.File -import java.io.FileOutputStream import java.io.IOException class TagWriter { @@ -34,7 +33,7 @@ class TagWriter { suspend fun scan(context: Context, toBeScanned: List?) { if (toBeScanned == null || toBeScanned.isEmpty()) { Log.i("scan", "scan: Empty") - Toast.makeText(context, "Scan file from folder", Toast.LENGTH_SHORT).show() + context.showToast( "Scan file from folder") return } MediaScannerConnection.scanFile( @@ -60,7 +59,7 @@ class TagWriter { info.artworkInfo.artwork.compress( Bitmap.CompressFormat.JPEG, 100, - FileOutputStream(albumArtFile) + albumArtFile.outputStream() ) artwork = AndroidArtwork.createArtworkFromFile(albumArtFile) } catch (e: IOException) { @@ -133,7 +132,7 @@ class TagWriter { info.artworkInfo.artwork.compress( Bitmap.CompressFormat.JPEG, 100, - FileOutputStream(albumArtFile) + albumArtFile.outputStream() ) artwork = AndroidArtwork.createArtworkFromFile(albumArtFile) } catch (e: IOException) { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/CategoryInfoAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/CategoryInfoAdapter.kt index 0347d42b7..496f60a13 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/CategoryInfoAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/CategoryInfoAdapter.kt @@ -19,12 +19,12 @@ import android.view.LayoutInflater import android.view.MotionEvent import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import code.name.monkey.appthemehelper.ThemeStore.Companion.accentColor import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.PreferenceDialogLibraryCategoriesListitemBinding +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.model.CategoryInfo import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.SwipeAndDragHelper @@ -59,12 +59,7 @@ class CategoryInfoAdapter : RecyclerView.Adapter categoryInfo.visible = !categoryInfo.visible holder.binding.checkbox.isChecked = categoryInfo.visible } else { - Toast.makeText( - holder.itemView.context, - R.string.you_have_to_select_at_least_one_category, - Toast.LENGTH_SHORT - ) - .show() + holder.itemView.context.showToast(R.string.you_have_to_select_at_least_one_category) } } holder.binding.dragView.setOnTouchListener { _: View?, event: MotionEvent -> diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt b/app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt index d6a938009..cd76776e5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt +++ b/app/src/main/java/code/name/monkey/retromusic/cast/RetroWebServer.kt @@ -114,7 +114,7 @@ class RetroWebServer(val context: Context) : NanoHTTPD(SERVER_PORT) { } else { res = newFixedLengthResponse( Status.OK, mime, - FileInputStream(file), file.length() + file.inputStream(), file.length() ) res.addHeader("Accept-Ranges", "bytes") res.addHeader("Content-Length", "" + fileLen) diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/SavePlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/SavePlaylistDialog.kt index ef4dd7cce..2b9c136b2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/SavePlaylistDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/SavePlaylistDialog.kt @@ -22,14 +22,10 @@ import androidx.core.os.bundleOf import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import code.name.monkey.appthemehelper.util.VersionUtils -import code.name.monkey.retromusic.App import code.name.monkey.retromusic.EXTRA_PLAYLIST import code.name.monkey.retromusic.R import code.name.monkey.retromusic.db.PlaylistWithSongs -import code.name.monkey.retromusic.extensions.colorButtons -import code.name.monkey.retromusic.extensions.createNewFile -import code.name.monkey.retromusic.extensions.extraNotNull -import code.name.monkey.retromusic.extensions.materialDialog +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.helper.M3UWriter import code.name.monkey.retromusic.util.PlaylistsUtil import kotlinx.coroutines.Dispatchers @@ -64,25 +60,21 @@ class SavePlaylistDialog : DialogFragment() { playlistWithSongs ) withContext(Dispatchers.Main) { - Toast.makeText( - requireContext(), + showToast( String.format( requireContext().getString(R.string.saved_playlist_to), data?.lastPathSegment ), Toast.LENGTH_LONG - ).show() + ) dismiss() } } } } catch (e: Exception) { - Toast.makeText( - context, - "Something went wrong : " + e.message, - Toast.LENGTH_SHORT + showToast( + "Something went wrong : " + e.message ) - .show() } } } else { @@ -95,11 +87,10 @@ class SavePlaylistDialog : DialogFragment() { ) { _, _ -> } withContext(Dispatchers.Main) { - Toast.makeText( - requireContext(), - String.format(App.getContext().getString(R.string.saved_playlist_to), file), + showToast( + String.format(getString(R.string.saved_playlist_to), file), Toast.LENGTH_LONG - ).show() + ) dismiss() } } diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ContextExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ContextExtensions.kt new file mode 100644 index 000000000..040696eb9 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ContextExtensions.kt @@ -0,0 +1,13 @@ +package code.name.monkey.retromusic.extensions + +import android.content.Context +import android.widget.Toast +import androidx.annotation.StringRes + +fun Context.showToast(@StringRes stringRes: Int, duration: Int = Toast.LENGTH_SHORT) { + showToast(getString(stringRes), duration) +} + +fun Context.showToast(message: String, duration: Int = Toast.LENGTH_SHORT) { + Toast.makeText(this, message, duration).show() +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/FileExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/FileExtensions.kt new file mode 100644 index 000000000..5c4df1a37 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/FileExtensions.kt @@ -0,0 +1,6 @@ +package code.name.monkey.retromusic.extensions + +import java.io.BufferedOutputStream +import java.util.zip.ZipOutputStream + +fun BufferedOutputStream.zipOutputStream(): ZipOutputStream = ZipOutputStream(this) \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt index a4082a824..90f479e13 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt @@ -80,12 +80,12 @@ fun Fragment.whichFragment(@IdRes id: Int): T { return childFragmentManager.findFragmentById(id) as T } -fun Fragment.showToast(@StringRes stringRes: Int) { - showToast(getString(stringRes)) +fun Fragment.showToast(@StringRes stringRes: Int, duration: Int = Toast.LENGTH_SHORT) { + showToast(getString(stringRes), duration) } -fun Fragment.showToast(message: String) { - Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() +fun Fragment.showToast(message: String, duration: Int = Toast.LENGTH_SHORT) { + Toast.makeText(requireContext(), message, duration).show() } fun Context.getDrawableCompat(@DrawableRes drawableRes: Int): Drawable { 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 b484d55d9..8f700ea9d 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 @@ -16,11 +16,11 @@ package code.name.monkey.retromusic.fragments import android.animation.ValueAnimator import android.content.Context -import android.widget.Toast import androidx.core.animation.doOnEnd import androidx.lifecycle.* import code.name.monkey.retromusic.* import code.name.monkey.retromusic.db.* +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.fragments.ReloadType.* import code.name.monkey.retromusic.fragments.search.Filter import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -348,12 +348,7 @@ class LibraryViewModel( createPlaylist(PlaylistEntity(playlistName = playlistName)) insertSongs(songs.map { it.toSongEntity(playlistId) }) withContext(Main) { - Toast.makeText( - context , - context - .getString(R.string.playlist_created_sucessfully, playlistName), - Toast.LENGTH_SHORT - ).show() + context.showToast(R.string.playlist_created_sucessfully) } } else { val playlist = playlists.firstOrNull() @@ -365,13 +360,7 @@ class LibraryViewModel( } forceReload(Playlists) withContext(Main) { - Toast.makeText( - context, context.getString( - R.string.added_song_count_to_playlist, - songs.size, - playlistName - ), Toast.LENGTH_SHORT - ).show() + context.showToast(R.string.added_song_count_to_playlist) } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt index d4b5d2c54..f56644cae 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt @@ -5,7 +5,6 @@ import android.content.Intent import android.os.Bundle import android.view.MenuItem import android.view.View -import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.core.net.toUri import androidx.core.view.isVisible @@ -20,6 +19,7 @@ import code.name.monkey.retromusic.databinding.FragmentBackupBinding import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.accentOutlineColor import code.name.monkey.retromusic.extensions.materialDialog +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.helper.BackupHelper import code.name.monkey.retromusic.helper.sanitize import code.name.monkey.retromusic.util.BackupUtil @@ -122,11 +122,7 @@ class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupC try { file.delete() } catch (exception: SecurityException) { - Toast.makeText( - activity, - "Could not delete backup", - Toast.LENGTH_SHORT - ).show() + showToast("Could not delete backup") } backupViewModel.loadBackups() return true @@ -151,11 +147,9 @@ class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupC file.renameTo(renamedFile) backupViewModel.loadBackups() } else { - Toast.makeText( - requireContext(), - "File already exists", - Toast.LENGTH_SHORT - ).show() + showToast( + "File already exists" + ) } } positiveButton(android.R.string.ok) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index 845b32583..5f62b0711 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -29,7 +29,6 @@ import android.view.MenuItem import android.view.MotionEvent import android.view.View import android.widget.RelativeLayout -import android.widget.Toast import androidx.annotation.LayoutRes import androidx.appcompat.widget.Toolbar import androidx.core.os.bundleOf @@ -48,10 +47,7 @@ import code.name.monkey.retromusic.activities.tageditor.SongTagEditorActivity import code.name.monkey.retromusic.db.PlaylistEntity import code.name.monkey.retromusic.db.toSongEntity import code.name.monkey.retromusic.dialogs.* -import code.name.monkey.retromusic.extensions.currentFragment -import code.name.monkey.retromusic.extensions.hide -import code.name.monkey.retromusic.extensions.keepScreenOn -import code.name.monkey.retromusic.extensions.whichFragment +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.fragments.NowPlayingScreen import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment @@ -60,7 +56,10 @@ import code.name.monkey.retromusic.interfaces.IPaletteColorHolder import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.repository.RealRepository import code.name.monkey.retromusic.service.MusicService -import code.name.monkey.retromusic.util.* +import code.name.monkey.retromusic.util.NavigationUtil +import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.RetroUtil +import code.name.monkey.retromusic.util.RingtoneManager import com.google.android.material.bottomsheet.BottomSheetBehavior import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main @@ -196,7 +195,7 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMainActivityFragme if (genre == null) { genre = "Not Specified" } - Toast.makeText(context, genre, Toast.LENGTH_SHORT).show() + showToast(genre) return true } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt index ceb39d34e..63d3848ae 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt @@ -24,7 +24,6 @@ import android.view.MenuInflater import android.view.MenuItem import android.view.View import android.webkit.MimeTypeMap -import android.widget.Toast import androidx.activity.OnBackPressedCallback import androidx.appcompat.widget.PopupMenu import androidx.core.view.isVisible @@ -211,12 +210,9 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), } R.id.action_set_as_start_directory -> { startDirectory = file - Toast.makeText( - activity, - String.format(getString(R.string.new_start_directory), file.path), - Toast.LENGTH_SHORT + showToast( + String.format(getString(R.string.new_start_directory), file.path) ) - .show() return@setOnMenuItemClickListener true } R.id.action_scan -> { @@ -491,7 +487,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), return } if (toBeScanned.isEmpty()) { - Toast.makeText(activity, R.string.nothing_to_scan, Toast.LENGTH_SHORT).show() + showToast(R.string.nothing_to_scan) } else { MediaScannerConnection.scanFile( requireContext(), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt index d517e1dd1..7844a9ab4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt @@ -24,7 +24,6 @@ import android.view.LayoutInflater import android.view.MenuItem import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.core.view.doOnPreDraw import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment @@ -36,6 +35,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.databinding.FragmentUserInfoBinding import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.applyToolbar +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.RetroGlideExtension @@ -55,9 +55,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.koin.androidx.viewmodel.ext.android.sharedViewModel -import java.io.BufferedOutputStream import java.io.File -import java.io.FileOutputStream class UserInfoFragment : Fragment() { @@ -98,11 +96,7 @@ class UserInfoFragment : Fragment() { binding.next.setOnClickListener { val nameString = binding.name.text.toString().trim { it <= ' ' } if (nameString.isEmpty()) { - Toast.makeText( - requireContext(), - "Your name can't be empty!", - Toast.LENGTH_SHORT - ).show() + showToast("Your name can't be empty!") return@setOnClickListener } PreferenceUtil.userName = nameString @@ -204,9 +198,9 @@ class UserInfoFragment : Fragment() { val fileUri = data?.data fileUri?.let { setAndSaveBannerImage(it) } } else if (resultCode == ImagePicker.RESULT_ERROR) { - Toast.makeText(requireContext(), ImagePicker.getError(data), Toast.LENGTH_SHORT).show() + showToast(ImagePicker.getError(data)) } else { - Toast.makeText(requireContext(), "Task Cancelled", Toast.LENGTH_SHORT).show() + showToast("Task Cancelled") } } @@ -245,7 +239,7 @@ class UserInfoFragment : Fragment() { val file = File(appDir, fileName) var successful = false runCatching { - BufferedOutputStream(FileOutputStream(file)).use { + file.outputStream().buffered().use { successful = ImageUtil.resizeBitmap(bitmap, 2048) .compress(Bitmap.CompressFormat.WEBP, 100, it) } @@ -254,7 +248,7 @@ class UserInfoFragment : Fragment() { } if (successful) { withContext(Dispatchers.Main) { - Toast.makeText(requireContext(), "Updated", Toast.LENGTH_SHORT).show() + showToast("Updated") } } } 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 8a1502ab0..f45881d8d 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 @@ -19,12 +19,12 @@ import android.graphics.drawable.ColorDrawable import android.os.Build import android.os.Bundle import android.view.View -import android.widget.Toast import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceManager import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat import code.name.monkey.retromusic.activities.OnThemeChangedListener +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.preferences.* import code.name.monkey.retromusic.util.NavigationUtil import dev.chrisbanes.insetter.applyInsetter @@ -36,8 +36,7 @@ import dev.chrisbanes.insetter.applyInsetter abstract class AbsSettingsFragment : ATEPreferenceFragmentCompat() { internal fun showProToastAndNavigate(message: String) { - Toast.makeText(requireContext(), "$message is Pro version feature.", Toast.LENGTH_SHORT) - .show() + showToast("$message is Pro version feature.") NavigationUtil.goToProVersion(requireActivity()) } diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/BackupHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/BackupHelper.kt index fef31b6d4..32e149239 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/BackupHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/BackupHelper.kt @@ -2,11 +2,11 @@ package code.name.monkey.retromusic.helper import android.content.Context import android.os.Environment -import android.widget.Toast -import code.name.monkey.retromusic.App import code.name.monkey.retromusic.BuildConfig import code.name.monkey.retromusic.db.PlaylistEntity import code.name.monkey.retromusic.db.toSongEntity +import code.name.monkey.retromusic.extensions.showToast +import code.name.monkey.retromusic.extensions.zipOutputStream import code.name.monkey.retromusic.helper.BackupContent.* import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.repository.Repository @@ -15,12 +15,12 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.core.component.KoinComponent import org.koin.core.component.inject -import java.io.* +import java.io.File +import java.io.InputStream import java.text.SimpleDateFormat import java.util.* import java.util.zip.ZipEntry import java.util.zip.ZipInputStream -import java.util.zip.ZipOutputStream object BackupHelper : KoinComponent { private val repository by inject() @@ -37,38 +37,30 @@ object BackupHelper : KoinComponent { zipItems.addAll(getSettingsZipItems(context)) getUserImageZipItems(context)?.let { zipItems.addAll(it) } zipItems.addAll(getCustomArtistZipItems(context)) - zipAll(zipItems, backupFile) + zipAll(context, zipItems, backupFile) // Clean Cache Playlist Directory File(context.filesDir, PLAYLISTS_PATH).deleteRecursively() } - private suspend fun zipAll(zipItems: List, backupFile: File) = + private suspend fun zipAll(context: Context, zipItems: List, backupFile: File) = withContext(Dispatchers.IO) { runCatching { - ZipOutputStream(BufferedOutputStream(FileOutputStream(backupFile))).use { out -> + backupFile.outputStream().buffered().zipOutputStream().use { out -> for (zipItem in zipItems) { - FileInputStream(zipItem.filePath).use { fi -> - BufferedInputStream(fi).use { origin -> - val entry = ZipEntry(zipItem.zipPath) - out.putNextEntry(entry) - origin.copyTo(out) - } + File(zipItem.filePath).inputStream().buffered().use { origin -> + val entry = ZipEntry(zipItem.zipPath) + out.putNextEntry(entry) + origin.copyTo(out) } } } }.onFailure { withContext(Dispatchers.Main) { - Toast.makeText(App.getContext(), "Couldn't create backup", Toast.LENGTH_SHORT) - .show() + context.showToast("Couldn't create backup") } }.onSuccess { withContext(Dispatchers.Main) { - Toast.makeText( - App.getContext(), - "Backup created successfully", - Toast.LENGTH_SHORT - ) - .show() + context.showToast("Backup created successfully") } } } @@ -167,7 +159,7 @@ object BackupHelper : KoinComponent { } } withContext(Dispatchers.Main) { - Toast.makeText(context, "Restore Completed Successfully", Toast.LENGTH_SHORT).show() + context.showToast("Restore Completed Successfully") } } } @@ -176,7 +168,7 @@ object BackupHelper : KoinComponent { val file = File( context.filesDir.path, zipEntry.getFileName() ) - BufferedOutputStream(FileOutputStream(file)).use { bos -> + file.outputStream().buffered().use { bos -> zipIn.copyTo(bos) } } @@ -188,7 +180,7 @@ object BackupHelper : KoinComponent { if (file.exists()) { file.delete() } - BufferedOutputStream(FileOutputStream(file)).use { bos -> + file.outputStream().buffered().use { bos -> zipIn.copyTo(bos) } } @@ -233,16 +225,14 @@ object BackupHelper : KoinComponent { if (!parentFolder.exists()) { parentFolder.mkdirs() } - BufferedOutputStream( - FileOutputStream( - File( - parentFolder, - zipEntry.getFileName() - ) - ) - ).use { bos -> - zipIn.copyTo(bos) - } + val file = File( + parentFolder, + zipEntry.getFileName() + ) + file.outputStream().buffered() + .use { bos -> + zipIn.copyTo(bos) + } } private fun restoreCustomArtistPrefs( @@ -252,7 +242,7 @@ object BackupHelper : KoinComponent { ) { val file = File(context.filesDir.parentFile, "shared_prefs".child(zipEntry.getFileName())) - BufferedOutputStream(FileOutputStream(file)).use { bos -> + file.outputStream().buffered().use { bos -> zipIn.copyTo(bos) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt b/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt index a8235ad80..0a69baaaa 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt @@ -25,6 +25,7 @@ import android.provider.DocumentsContract import android.widget.Toast import androidx.core.content.ContextCompat import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.repository.SongRepository import code.name.monkey.retromusic.service.MusicService @@ -317,11 +318,7 @@ object MusicPlayerRemote : KoinComponent { queue.add(song) openQueue(queue, 0, false) } - Toast.makeText( - musicService, - musicService!!.resources.getString(R.string.added_title_to_playing_queue), - Toast.LENGTH_SHORT - ).show() + musicService?.showToast(R.string.added_title_to_playing_queue) return true } return false @@ -340,7 +337,7 @@ object MusicPlayerRemote : KoinComponent { R.string.added_x_titles_to_playing_queue, songs.size ) - Toast.makeText(musicService, toast, Toast.LENGTH_SHORT).show() + musicService?.showToast(toast, Toast.LENGTH_SHORT) return true } return false @@ -355,11 +352,7 @@ object MusicPlayerRemote : KoinComponent { queue.add(song) openQueue(queue, 0, false) } - Toast.makeText( - musicService, - musicService!!.resources.getString(R.string.added_title_to_playing_queue), - Toast.LENGTH_SHORT - ).show() + musicService?.showToast(R.string.added_title_to_playing_queue) return true } return false @@ -377,7 +370,7 @@ object MusicPlayerRemote : KoinComponent { R.string.added_x_titles_to_playing_queue, songs.size ) - Toast.makeText(musicService, toast, Toast.LENGTH_SHORT).show() + musicService?.showToast(toast) return true } return false diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt index 85dc63596..0a58e6573 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt @@ -21,7 +21,6 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.core.graphics.BlendModeColorFilterCompat import androidx.core.graphics.BlendModeCompat.SRC_IN import androidx.fragment.app.DialogFragment @@ -81,7 +80,7 @@ class AlbumCoverStylePreferenceDialog : DialogFragment(), val coverStyle = values()[viewPagerPosition] if (isAlbumCoverStyle(coverStyle)) { val result = getString(coverStyle.titleRes) + " theme is Pro version feature." - Toast.makeText(context, result, Toast.LENGTH_SHORT).show() + showToast(result) NavigationUtil.goToProVersion(requireActivity()) } else { PreferenceUtil.albumCoverStyle = coverStyle diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/LibraryPreference.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/LibraryPreference.kt index e88120a9c..3fa4aad50 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/LibraryPreference.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/LibraryPreference.kt @@ -18,7 +18,6 @@ import android.app.Dialog import android.content.Context import android.os.Bundle import android.util.AttributeSet -import android.widget.Toast import androidx.core.graphics.BlendModeColorFilterCompat import androidx.core.graphics.BlendModeCompat.SRC_IN import androidx.fragment.app.DialogFragment @@ -30,6 +29,7 @@ import code.name.monkey.retromusic.databinding.PreferenceDialogLibraryCategories import code.name.monkey.retromusic.extensions.colorButtons import code.name.monkey.retromusic.extensions.colorControlNormal import code.name.monkey.retromusic.extensions.materialDialog +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.model.CategoryInfo import code.name.monkey.retromusic.util.PreferenceUtil @@ -76,7 +76,7 @@ class LibraryPreferenceDialog : DialogFragment() { private fun updateCategories(categories: List) { if (getSelected(categories) == 0) return if (getSelected(categories) > 5) { - Toast.makeText(context, "Not more than 5 items", Toast.LENGTH_SHORT).show() + showToast("Not more than 5 items") return } PreferenceUtil.libraryCategory = categories diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt index 64b95d87e..3b038f120 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt @@ -21,7 +21,6 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.core.graphics.BlendModeColorFilterCompat import androidx.core.graphics.BlendModeCompat.SRC_IN import androidx.fragment.app.DialogFragment @@ -91,7 +90,7 @@ class NowPlayingScreenPreferenceDialog : DialogFragment(), ViewPager.OnPageChang if (isNowPlayingThemes(nowPlayingScreen)) { val result = "${getString(nowPlayingScreen.titleRes)} theme is Pro version feature." - Toast.makeText(context, result, Toast.LENGTH_SHORT).show() + showToast(result) NavigationUtil.goToProVersion(requireContext()) } else { PreferenceUtil.nowPlayingScreen = nowPlayingScreen diff --git a/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt b/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt index e9a7ffd00..d1e0e33f6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/CrossFadePlayer.kt @@ -9,9 +9,9 @@ import android.media.MediaPlayer import android.media.audiofx.AudioEffect import android.os.PowerManager import android.util.Log -import android.widget.Toast import androidx.core.net.toUri import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.service.AudioFader.Companion.createFadeAnimator import code.name.monkey.retromusic.service.playback.Playback @@ -291,12 +291,7 @@ class CrossFadePlayer(val context: Context) : Playback, MediaPlayer.OnCompletion player2 = MediaPlayer() mIsInitialized = true mp?.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK) - Toast.makeText( - context, - context.resources.getString(R.string.unplayable_file), - Toast.LENGTH_SHORT - ) - .show() + context.showToast(R.string.unplayable_file) Log.e(TAG, what.toString() + extra) return false } diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt index d656df16e..99d75b6d3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.kt @@ -38,7 +38,6 @@ import android.support.v4.media.session.PlaybackStateCompat import android.telephony.PhoneStateListener import android.telephony.TelephonyManager import android.util.Log -import android.widget.Toast import androidx.core.content.edit import androidx.core.content.getSystemService import androidx.media.AudioAttributesCompat @@ -54,6 +53,7 @@ import code.name.monkey.retromusic.activities.LockScreenActivity import code.name.monkey.retromusic.appwidgets.* import code.name.monkey.retromusic.auto.AutoMediaIDHelper import code.name.monkey.retromusic.auto.AutoMusicProvider +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.glide.BlurTransformation import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.RetroGlideExtension.getSongModel @@ -891,10 +891,7 @@ class MusicService : MediaBrowserServiceCompat(), } } } else { - Toast.makeText( - this, resources.getString(R.string.audio_focus_denied), Toast.LENGTH_SHORT - ) - .show() + showToast(R.string.audio_focus_denied) } } @@ -924,8 +921,7 @@ class MusicService : MediaBrowserServiceCompat(), if (openTrackAndPrepareNextAt(position)) { play() } else { - Toast.makeText(this, resources.getString(R.string.unplayable_file), Toast.LENGTH_SHORT) - .show() + showToast(resources.getString(R.string.unplayable_file)) } } @@ -940,7 +936,7 @@ class MusicService : MediaBrowserServiceCompat(), } play() } else { - Toast.makeText(applicationContext, R.string.playlist_is_empty, Toast.LENGTH_LONG).show() + showToast(R.string.playlist_is_empty) } } @@ -1315,11 +1311,10 @@ class MusicService : MediaBrowserServiceCompat(), openQueue(playlistSongs, 0, true) } } else { - Toast.makeText(applicationContext, R.string.playlist_is_empty, Toast.LENGTH_LONG) - .show() + showToast( R.string.playlist_is_empty) } } else { - Toast.makeText(applicationContext, R.string.playlist_is_empty, Toast.LENGTH_LONG).show() + showToast(R.string.playlist_is_empty) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/BackupUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/BackupUtil.kt index c3f00af0f..e7a6f430a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/BackupUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/BackupUtil.kt @@ -2,8 +2,8 @@ package code.name.monkey.retromusic.util import android.content.Context import android.content.Intent -import android.widget.Toast import androidx.core.content.FileProvider +import code.name.monkey.retromusic.extensions.showToast import java.io.File object BackupUtil { @@ -19,11 +19,9 @@ object BackupUtil { ).addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION).setType("*/*") } catch (e: IllegalArgumentException) { e.printStackTrace() - Toast.makeText( - context, - "Could not share this file.", - Toast.LENGTH_SHORT - ).show() + context.showToast( + "Could not share this file." + ) Intent() } } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/CustomArtistImageUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/CustomArtistImageUtil.kt index 4836032a1..fa6e52fd3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/CustomArtistImageUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/CustomArtistImageUtil.kt @@ -25,14 +25,13 @@ import android.provider.MediaStore import android.widget.Toast import androidx.core.content.edit import code.name.monkey.retromusic.App +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.model.Artist import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.request.target.SimpleTarget import com.bumptech.glide.request.transition.Transition -import java.io.BufferedOutputStream import java.io.File -import java.io.FileOutputStream import java.io.IOException import java.util.* @@ -53,7 +52,7 @@ class CustomArtistImageUtil private constructor(context: Context) { .into(object : SimpleTarget() { override fun onLoadFailed(errorDrawable: Drawable?) { super.onLoadFailed(errorDrawable) - Toast.makeText(App.getContext(), "Load Failed", Toast.LENGTH_LONG).show() + App.getContext().showToast("Load Failed") } @SuppressLint("StaticFieldLeak") @@ -70,13 +69,12 @@ class CustomArtistImageUtil private constructor(context: Context) { var succesful = false try { - val os = BufferedOutputStream(FileOutputStream(file)) - succesful = ImageUtil.resizeBitmap(resource, 2048) - .compress(Bitmap.CompressFormat.JPEG, 100, os) - os.close() + file.outputStream().buffered().use { bos -> + succesful = ImageUtil.resizeBitmap(resource, 2048) + .compress(Bitmap.CompressFormat.JPEG, 100, bos) + } } catch (e: IOException) { - Toast.makeText(App.getContext(), e.toString(), Toast.LENGTH_LONG) - .show() + App.getContext().showToast(e.toString(), Toast.LENGTH_LONG) } if (succesful) { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt index b37b01710..bab409796 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.kt @@ -9,7 +9,6 @@ import android.os.Environment import android.provider.BaseColumns import android.provider.MediaStore import android.util.Log -import android.widget.Toast import androidx.core.content.FileProvider import androidx.core.content.contentValuesOf import androidx.core.net.toUri @@ -20,6 +19,7 @@ import code.name.monkey.retromusic.db.PlaylistEntity import code.name.monkey.retromusic.db.SongEntity import code.name.monkey.retromusic.db.toSongEntity import code.name.monkey.retromusic.extensions.getLong +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.helper.MusicPlayerRemote.removeFromQueue import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.model.Playlist @@ -58,11 +58,7 @@ object MusicUtil : KoinComponent { } catch (e: IllegalArgumentException) { // TODO the path is most likely not like /storage/emulated/0/... but something like /storage/28C7-75B0/... e.printStackTrace() - Toast.makeText( - context, - "Could not share this file, I'm aware of the issue.", - Toast.LENGTH_SHORT - ).show() + context.showToast("Could not share this file, I'm aware of the issue.") Intent() } } @@ -456,12 +452,7 @@ object MusicUtil : KoinComponent { } activity.contentResolver.notifyChange("content://media".toUri(), null) activity.runOnUiThread { - Toast.makeText( - activity, - activity.getString(R.string.deleted_x_songs, songCount), - Toast.LENGTH_SHORT - ) - .show() + activity.showToast(activity.getString(R.string.deleted_x_songs, songCount)) callback?.run() } @@ -519,11 +510,7 @@ object MusicUtil : KoinComponent { cursor.close() } withContext(Dispatchers.Main) { - Toast.makeText( - context, - context.getString(R.string.deleted_x_songs, deletedCount), - Toast.LENGTH_SHORT - ).show() + context.showToast(context.getString(R.string.deleted_x_songs, deletedCount)) } } catch (ignored: SecurityException) { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt index 37e26254f..45d8f1e1a 100755 --- a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt @@ -22,6 +22,7 @@ import android.widget.Toast import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.* import code.name.monkey.retromusic.activities.bugreport.BugReportActivity +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.helper.MusicPlayerRemote.audioSessionId object NavigationUtil { @@ -68,10 +69,7 @@ object NavigationUtil { private fun stockEqualizer(activity: Activity) { val sessionId = audioSessionId if (sessionId == AudioEffect.ERROR_BAD_VALUE) { - Toast.makeText( - activity, activity.resources.getString(R.string.no_audio_ID), Toast.LENGTH_LONG - ) - .show() + activity.showToast(R.string.no_audio_ID, Toast.LENGTH_LONG) } else { try { val effects = Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL) @@ -79,12 +77,7 @@ object NavigationUtil { effects.putExtra(AudioEffect.EXTRA_CONTENT_TYPE, AudioEffect.CONTENT_TYPE_MUSIC) activity.startActivityForResult(effects, 0) } catch (notFound: ActivityNotFoundException) { - Toast.makeText( - activity, - activity.resources.getString(R.string.no_equalizer), - Toast.LENGTH_SHORT - ) - .show() + activity.showToast(R.string.no_equalizer) } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt index 589795243..8347f4ba1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt @@ -424,10 +424,11 @@ object PreferenceUtil { val position = sharedPreferences.getStringOrDefault( HOME_ARTIST_GRID_STYLE, "0" ).toInt() - val typedArray = App.getContext() - .resources.obtainTypedArray(R.array.pref_home_grid_style_layout) - val layoutRes = typedArray.getResourceId(position, 0) - typedArray.recycle() + val layoutRes = + App.getContext().resources.obtainTypedArray(R.array.pref_home_grid_style_layout) + .use { + it.getResourceId(position, 0) + } return if (layoutRes == 0) { R.layout.item_artist } else layoutRes @@ -438,10 +439,10 @@ object PreferenceUtil { val position = sharedPreferences.getStringOrDefault( HOME_ALBUM_GRID_STYLE, "4" ).toInt() - val typedArray = App.getContext() - .resources.obtainTypedArray(R.array.pref_home_grid_style_layout) - val layoutRes = typedArray.getResourceId(position, 0) - typedArray.recycle() + val layoutRes = App.getContext() + .resources.obtainTypedArray(R.array.pref_home_grid_style_layout).use { + it.getResourceId(position, 0) + } return if (layoutRes == 0) { R.layout.item_image } else layoutRes @@ -582,7 +583,7 @@ object PreferenceUtil { 4 -> VerticalFlipTransformation() 5 -> HingeTransformation() 6 -> VerticalStackTransformer() - else -> ViewPager.PageTransformer { _, _ -> } + else -> ViewPager.PageTransformer { _, _ -> } } } 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 a023e7475..8071ce4fa 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 @@ -19,10 +19,10 @@ import android.content.Intent import android.provider.BaseColumns import android.provider.MediaStore import android.provider.Settings -import android.widget.Toast import androidx.core.net.toUri import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.showToast import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil.getSongFileUri import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -45,7 +45,7 @@ class RingtoneManager(val context: Context) { Settings.System.putString(resolver, Settings.System.RINGTONE, uri.toString()) val message = context .getString(R.string.x_has_been_set_as_ringtone, cursorSong.getString(0)) - Toast.makeText(context, message, Toast.LENGTH_SHORT).show() + context.showToast(message) } } } catch (ignored: SecurityException) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/NetworkImageView.kt b/app/src/main/java/code/name/monkey/retromusic/views/NetworkImageView.kt index 0c2a84b68..8dd3887a5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/NetworkImageView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/NetworkImageView.kt @@ -15,24 +15,24 @@ package code.name.monkey.retromusic.views import android.content.Context import android.util.AttributeSet +import androidx.core.content.withStyledAttributes import code.name.monkey.retromusic.R import com.bumptech.glide.Glide /** @author Hemanth S (h4h13). */ -class NetworkImageView : CircularImageView { - constructor(context: Context) : super(context) { - init(context, null) - } +class NetworkImageView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : + CircularImageView(context, attrs, defStyleAttr) { - constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { - init(context, attrs) - } - - constructor( - context: Context, attrs: AttributeSet?, defStyleAttr: Int - ) : super(context, attrs, defStyleAttr) { - init(context, attrs) + init { + context.withStyledAttributes(attrs, R.styleable.NetworkImageView, 0, 0) { + val url = getString(R.styleable.NetworkImageView_url_link) + setImageUrl(context, url!!) + } } fun setImageUrl(imageUrl: String) { @@ -46,12 +46,4 @@ class NetworkImageView : CircularImageView { .placeholder(R.drawable.ic_account) .into(this) } - - private fun init(context: Context, attributeSet: AttributeSet?) { - val attributes = - context.obtainStyledAttributes(attributeSet, R.styleable.NetworkImageView, 0, 0) - val url = attributes.getString(R.styleable.NetworkImageView_url_link) - setImageUrl(context, url!!) - attributes.recycle() - } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/views/RetroShapeableImageView.kt b/app/src/main/java/code/name/monkey/retromusic/views/RetroShapeableImageView.kt index 18939a3ec..de9d391b3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/RetroShapeableImageView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/RetroShapeableImageView.kt @@ -15,6 +15,7 @@ package code.name.monkey.retromusic.views import android.content.Context import android.util.AttributeSet +import androidx.core.content.withStyledAttributes import code.name.monkey.retromusic.R import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.shape.CornerFamily @@ -29,13 +30,12 @@ class RetroShapeableImageView @JvmOverloads constructor( init { - val typedArray = - context.obtainStyledAttributes(attrs, R.styleable.RetroShapeableImageView, defStyle, -1) - addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ -> - val radius = width / 2f - shapeAppearanceModel = ShapeAppearanceModel().withCornerSize(radius) + context.withStyledAttributes(attrs, R.styleable.RetroShapeableImageView, defStyle, -1) { + addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ -> + val radius = width / 2f + shapeAppearanceModel = ShapeAppearanceModel().withCornerSize(radius) + } } - typedArray.recycle() } private fun updateCornerSize(cornerSize: Float) { diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml index 55df9fda7..ea27f4647 100755 --- a/app/src/main/res/layout/item_list.xml +++ b/app/src/main/res/layout/item_list.xml @@ -61,6 +61,14 @@ android:visibility="gone" tools:text="100" tools:visibility="visible" /> + + - @string/collapsing - @string/simple + @string/expanded + @string/compact @@ -229,5 +229,4 @@ @string/choose_image @string/remove_image - Collapsing \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 83301254e..af2db3a02 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -103,6 +103,7 @@ Please enter your valid GitHub password Please enter an issue title Please enter your valid GitHub username + Bug report successful An unexpected error occurred. Sorry you found this bug, if it keeps crashing \"Clear app data\" or send an Email Send using GitHub account Buy now @@ -126,6 +127,7 @@ Clear queue Color Colors + Compact Composer Copied device info to clipboard. Couldn\u2019t create playlist. @@ -168,6 +170,7 @@ Edit Synced Lyrics Empty Equalizer + Expanded FAQ Favorites Finish last song @@ -533,5 +536,4 @@ You have to select at least one category. You will be forwarded to the issue tracker website. Your account data is only used for authentication. - Bug report successful