Cleanup with Kotlin extension functions

This commit is contained in:
Prathamesh More 2022-04-13 14:33:36 +05:30
parent fc4f0396a4
commit e0f345b616
37 changed files with 183 additions and 291 deletions

View file

@ -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?) {}

View file

@ -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)
}
}

View file

@ -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() {

View file

@ -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<ClipboardManager>()
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 {

View file

@ -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<ActivityAlbumTagEditorBindin
}
private fun toastLoadingFailed() {
Toast.makeText(
this@AlbumTagEditorActivity,
R.string.could_not_download_album_cover,
Toast.LENGTH_SHORT
).show()
showToast(R.string.could_not_download_album_cover)
}
override fun searchImageOnWeb() {
@ -161,8 +154,7 @@ class AlbumTagEditorActivity : AbsTagEditorActivity<ActivityAlbumTagEditorBindin
override fun onLoadFailed(errorDrawable: Drawable?) {
super.onLoadFailed(errorDrawable)
Toast.makeText(this@AlbumTagEditorActivity, "Load Failed", Toast.LENGTH_LONG)
.show()
showToast("Load Failed", Toast.LENGTH_LONG)
}
override fun setResource(resource: BitmapPaletteWrapper?) {}

View file

@ -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.ActivitySongTagEditorBinding
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
@ -196,8 +193,7 @@ class SongTagEditorActivity : AbsTagEditorActivity<ActivitySongTagEditorBinding>
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?) {}

View file

@ -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<String?>?) {
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) {

View file

@ -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<CategoryInfoAdapter.ViewHolder>
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 ->

View file

@ -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)

View file

@ -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()
}
}

View file

@ -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()
}

View file

@ -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)

View file

@ -80,12 +80,12 @@ fun <T> 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 {

View file

@ -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)
}
}
}

View file

@ -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)

View file

@ -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
}
}

View file

@ -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(),

View file

@ -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")
}
}
}

View file

@ -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())
}

View file

@ -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<Repository>()
@ -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<ZipItem>, backupFile: File) =
private suspend fun zipAll(context: Context, zipItems: List<ZipItem>, 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 ->
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,14 +225,12 @@ object BackupHelper : KoinComponent {
if (!parentFolder.exists()) {
parentFolder.mkdirs()
}
BufferedOutputStream(
FileOutputStream(
File(
val file = File(
parentFolder,
zipEntry.getFileName()
)
)
).use { bos ->
file.outputStream().buffered()
.use { bos ->
zipIn.copyTo(bos)
}
}
@ -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)
}
}

View file

@ -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

View file

@ -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

View file

@ -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<CategoryInfo>) {
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

View file

@ -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

View file

@ -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
}

View file

@ -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)
}
}

View file

@ -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()
}
}

View file

@ -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<Bitmap>() {
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))
file.outputStream().buffered().use { bos ->
succesful = ImageUtil.resizeBitmap(resource, 2048)
.compress(Bitmap.CompressFormat.JPEG, 100, os)
os.close()
.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) {

View file

@ -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) {

View file

@ -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)
}
}
}

View file

@ -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

View file

@ -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) {

View file

@ -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)
init {
context.withStyledAttributes(attrs, R.styleable.NetworkImageView, 0, 0) {
val url = getString(R.styleable.NetworkImageView_url_link)
setImageUrl(context, url!!)
}
constructor(
context: Context, attrs: AttributeSet?, defStyleAttr: Int
) : super(context, attrs, defStyleAttr) {
init(context, attrs)
}
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()
}
}

View file

@ -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)
context.withStyledAttributes(attrs, R.styleable.RetroShapeableImageView, defStyle, -1) {
addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ ->
val radius = width / 2f
shapeAppearanceModel = ShapeAppearanceModel().withCornerSize(radius)
}
typedArray.recycle()
}
}
private fun updateCornerSize(cornerSize: Float) {

View file

@ -61,6 +61,14 @@
android:visibility="gone"
tools:text="100"
tools:visibility="visible" />
<code.name.monkey.retromusic.views.PlayingIndicatorView
android:id="@+id/playing_indicator"
android:layout_width="45dp"
android:layout_height="45dp"
android:padding="5dp"
android:visibility="gone"
tools:visibility="visible"/>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.textview.MaterialTextView

View file

@ -53,8 +53,8 @@
</array>
<array name="pref_appbar_mode_titles">
<item>@string/collapsing</item>
<item>@string/simple</item>
<item>@string/expanded</item>
<item>@string/compact</item>
</array>
<string-array name="pref_appbar_mode_values">
@ -229,5 +229,4 @@
<item>@string/choose_image</item>
<item>@string/remove_image</item>
</string-array>
<string name="collapsing">Collapsing</string>
</resources>

View file

@ -103,6 +103,7 @@
<string name="bug_report_no_password">Please enter your valid GitHub password</string>
<string name="bug_report_no_title">Please enter an issue title</string>
<string name="bug_report_no_username">Please enter your valid GitHub username</string>
<string name="bug_report_success">Bug report successful</string>
<string name="bug_report_summary">An unexpected error occurred. Sorry you found this bug, if it keeps crashing \"Clear app data\" or send an Email </string>
<string name="bug_report_use_account">Send using GitHub account</string>
<string name="buy_now">Buy now</string>
@ -126,6 +127,7 @@
<string name="clear_playing_queue">Clear queue</string>
<string name="color">Color</string>
<string name="colors">Colors</string>
<string name="compact">Compact</string>
<string name="composer">Composer</string>
<string name="copied_device_info_to_clipboard">Copied device info to clipboard.</string>
<string name="could_not_create_playlist">Couldn\u2019t create playlist.</string>
@ -168,6 +170,7 @@
<string name="edit_synced_lyrics">Edit Synced Lyrics</string>
<string name="empty">Empty</string>
<string name="equalizer">Equalizer</string>
<string name="expanded">Expanded</string>
<string name="faq">FAQ</string>
<string name="favorites">Favorites</string>
<string name="finish_last_song">Finish last song</string>
@ -533,5 +536,4 @@
<string name="you_have_to_select_at_least_one_category">You have to select at least one category.</string>
<string name="you_will_be_forwarded_to_the_issue_tracker_website">You will be forwarded to the issue tracker website.</string>
<string name="your_account_data_is_only_used_for_authentication">Your account data is only used for authentication.</string>
<string name="bug_report_success">Bug report successful</string>
</resources>