diff --git a/app/build.gradle b/app/build.gradle index 07c88b733..b8f1de318 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,8 +32,8 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 263 - versionName '3.0.130' + versionCode 272 + versionName '3.0.501' multiDexEnabled true @@ -134,10 +134,6 @@ dependencies { implementation "androidx.legacy:legacy-preference-v14:$supportLibVersion" implementation "com.google.android.material:material:$supportLibVersion" - //For casting - implementation 'androidx.mediarouter:mediarouter:1.0.0' - implementation 'com.google.android.gms:play-services-cast-framework:16.1.0' - implementation "com.squareup.retrofit2:retrofit:2.4.0" implementation "com.squareup.retrofit2:converter-gson:2.4.0" implementation "com.squareup.retrofit2:adapter-rxjava2:2.4.0" @@ -145,10 +141,13 @@ dependencies { implementation "com.afollestad.material-dialogs:core:$materialDialog" implementation "com.afollestad.material-dialogs:commons:$materialDialog" implementation 'com.afollestad:material-cab:0.1.12' + implementation 'com.github.bumptech.glide:glide:4.8.0' implementation 'com.github.bumptech.glide:okhttp3-integration:4.8.0' + implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxjava:2.1.17' + implementation('com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.11.0@aar') { transitive = true } diff --git a/app/normal/release/app.aab b/app/normal/release/app.aab new file mode 100644 index 000000000..61e438eb1 Binary files /dev/null and b/app/normal/release/app.aab differ diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 040c6309f..9eec68241 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -41,17 +41,6 @@ public *; } -# ButterKnife --keep class butterknife.** { *; } --dontwarn butterknife.internal.** --keep class **$$ViewBinder { *; } --keepclasseswithmembernames class * { - @butterknife.* ; -} --keepclasseswithmembernames class * { - @butterknife.* ; -} - -keep class !android.support.v7.internal.view.menu.**,** {*;} -dontwarn diff --git a/app/sans/release/output.json b/app/sans/release/output.json new file mode 100644 index 000000000..0759ac23a --- /dev/null +++ b/app/sans/release/output.json @@ -0,0 +1 @@ +[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":268,"versionName":"3.0.330_1218","enabled":true,"outputFile":"app-sans-release.apk","fullName":"sansRelease","baseName":"sans-release"},"path":"app-sans-release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 63ac8d47f..3aa1ba44b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,7 @@ - + Android-Snowfall by JetRadar

Android Sliding Up Panelby The Umano Team

AOSP Support Librariesby AOSP contributors

-

Butter Knife by Jake Wharton

Glide by Sam Judd

Retrofit by Square team

Material Contextual Action Bar by Aidan Michael Follestad

diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html index 69f0c46ec..f29254401 100644 --- a/app/src/main/assets/retro-changelog.html +++ b/app/src/main/assets/retro-changelog.html @@ -1 +1 @@ -

Version 3.0.00

  • Converted app to kotlin
  • Now you can add plain text home screen widget
  • Good old side navigation bar for options
  • Bug report for better tracking with milestones
  • Snow fall effect can be enable from other settings(Works only one normal theme)
  • Click new music mix to play songs
  • Gradient image option for gird list
  • Clear button for playing queue
  • Folder list back button
  • New theme Fit
  • On library click on toolbar for accessing main menu
  • On home click on toolbar for accessing search
  • BottomSheetDialogue is now adaptable to screens, background colour and text size consistency.
  • Removed coloured navigation bar option to making app adapt the primary colour
  • Swipe up gesture for now playing removed, replaced with "tap to open", To achieve transparent navigation bar for desired themes.
  • Improved tablet UI and home screen by adding suggestions toggle banner issues.
  • Improving lyrics page

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file +

v3.0.501

Highlights

  • Kotlin conversion from Good old Java
  • Outline style system icons
  • New Material Design principles and Guide lines
  • Holiday Theme

Changelog

  • By default theme will be dark
  • Now you can add search app shortcut in home screen
  • Last selected Lyrics options saved
  • Now you can add plain text home screen widget
  • Good old side navigation bar for options
  • Bug report for better tracking with milestones
  • Snow fall effect can be enable from other settings(Works only one normal theme)
  • Click new music mix to play songs
  • Gradient image option for gird list
  • Clear button for playing queue
  • Folder list back button
  • New theme Fit
  • On library click on toolbar for accessing main menu
  • On home click on toolbar for accessing search
  • BottomSheetDialogue is now adaptable to screens, background colour and text size consistency.
  • Removed coloured navigation bar option to making app adapt the primary colour
  • Swipe up gesture for now playing removed, replaced with "tap to open", To achieve transparent navigation bar for desired themes.
  • Improved tablet UI and home screen by adding suggestions toggle banner issues.
  • Improving lyrics page
  • Updated image loading libraries(might loose your current artist images)

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.java b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.java deleted file mode 100644 index 6e51c31ef..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.java +++ /dev/null @@ -1,70 +0,0 @@ -package code.name.monkey.retromusic.appshortcuts; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.Icon; -import android.graphics.drawable.LayerDrawable; -import android.os.Build; -import android.util.TypedValue; - -import androidx.annotation.RequiresApi; -import code.name.monkey.appthemehelper.ThemeStore; -import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.util.PreferenceUtil; -import code.name.monkey.retromusic.util.RetroUtil; - -/** - * @author Adrian Campos - */ -@RequiresApi(Build.VERSION_CODES.N_MR1) -public final class AppShortcutIconGenerator { - public static Icon generateThemedIcon(Context context, int iconId) { - if (PreferenceUtil.getInstance().coloredAppShortcuts()) { - return generateUserThemedIcon(context, iconId); - } else { - return generateDefaultThemedIcon(context, iconId); - } - } - - private static Icon generateDefaultThemedIcon(Context context, int iconId) { - // Return an Icon of iconId with default colors - return generateThemedIcon(context, iconId, - context.getColor(R.color.app_shortcut_default_foreground), - context.getColor(R.color.app_shortcut_default_background) - ); - } - - private static Icon generateUserThemedIcon(Context context, int iconId) { - // Get background color from context's theme - final TypedValue typedColorBackground = new TypedValue(); - context.getTheme().resolveAttribute(android.R.attr.colorBackground, typedColorBackground, true); - - // Return an Icon of iconId with those colors - return generateThemedIcon(context, iconId, - ThemeStore.accentColor(context), - typedColorBackground.data - ); - } - - private static Icon generateThemedIcon(Context context, int iconId, int foregroundColor, int backgroundColor) { - // Get and tint foreground and background drawables - Drawable vectorDrawable = RetroUtil.getTintedVectorDrawable(context, iconId, foregroundColor); - Drawable backgroundDrawable = RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_app_shortcut_background, backgroundColor); - - // Squash the two drawables together - LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{backgroundDrawable, vectorDrawable}); - - // Return as an Icon - return Icon.createWithBitmap(drawableToBitmap(layerDrawable)); - } - - private static Bitmap drawableToBitmap(Drawable drawable) { - Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); - drawable.draw(canvas); - return bitmap; - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.kt new file mode 100644 index 000000000..f11df421a --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutIconGenerator.kt @@ -0,0 +1,67 @@ +package code.name.monkey.retromusic.appshortcuts + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.drawable.Drawable +import android.graphics.drawable.Icon +import android.graphics.drawable.LayerDrawable +import android.os.Build +import android.util.TypedValue + +import androidx.annotation.RequiresApi +import code.name.monkey.appthemehelper.ThemeStore +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.RetroUtil + +@RequiresApi(Build.VERSION_CODES.N_MR1) +object AppShortcutIconGenerator { + fun generateThemedIcon(context: Context, iconId: Int): Icon { + return if (PreferenceUtil.getInstance().coloredAppShortcuts()) { + generateUserThemedIcon(context, iconId) + } else { + generateDefaultThemedIcon(context, iconId) + } + } + + private fun generateDefaultThemedIcon(context: Context, iconId: Int): Icon { + // Return an Icon of iconId with default colors + return generateThemedIcon(context, iconId, + context.getColor(R.color.app_shortcut_default_foreground), + context.getColor(R.color.app_shortcut_default_background) + ) + } + + private fun generateUserThemedIcon(context: Context, iconId: Int): Icon { + // Get background color from context's theme + val typedColorBackground = TypedValue() + context.theme.resolveAttribute(android.R.attr.colorBackground, typedColorBackground, true) + + // Return an Icon of iconId with those colors + return generateThemedIcon(context, iconId, + ThemeStore.accentColor(context), + typedColorBackground.data + ) + } + + private fun generateThemedIcon(context: Context, iconId: Int, foregroundColor: Int, backgroundColor: Int): Icon { + // Get and tint foreground and background drawables + val vectorDrawable = RetroUtil.getTintedVectorDrawable(context, iconId, foregroundColor) + val backgroundDrawable = RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_app_shortcut_background, backgroundColor) + + // Squash the two drawables together + val layerDrawable = LayerDrawable(arrayOf(backgroundDrawable, vectorDrawable)) + + // Return as an Icon + return Icon.createWithBitmap(drawableToBitmap(layerDrawable)) + } + + private fun drawableToBitmap(drawable: Drawable): Bitmap { + val bitmap = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888) + val canvas = Canvas(bitmap) + drawable.setBounds(0, 0, canvas.width, canvas.height) + drawable.draw(canvas) + return bitmap + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.java b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.java deleted file mode 100644 index 85e9c4021..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.java +++ /dev/null @@ -1,77 +0,0 @@ -package code.name.monkey.retromusic.appshortcuts; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; - -import code.name.monkey.retromusic.model.Playlist; -import code.name.monkey.retromusic.model.smartplaylist.LastAddedPlaylist; -import code.name.monkey.retromusic.model.smartplaylist.MyTopTracksPlaylist; -import code.name.monkey.retromusic.model.smartplaylist.ShuffleAllPlaylist; - -import code.name.monkey.retromusic.appshortcuts.shortcuttype.LastAddedShortcutType; -import code.name.monkey.retromusic.appshortcuts.shortcuttype.ShuffleAllShortcutType; -import code.name.monkey.retromusic.appshortcuts.shortcuttype.TopTracksShortcutType; -import code.name.monkey.retromusic.service.MusicService; - -import static code.name.monkey.retromusic.Constants.*; - -/** - * @author Adrian Campos - */ - -public class AppShortcutLauncherActivity extends Activity { - public static final String KEY_SHORTCUT_TYPE = "code.name.monkey.retromusic.appshortcuts.ShortcutType"; - - public static final int SHORTCUT_TYPE_SHUFFLE_ALL = 0; - public static final int SHORTCUT_TYPE_TOP_TRACKS = 1; - public static final int SHORTCUT_TYPE_LAST_ADDED = 2; - public static final int SHORTCUT_TYPE_NONE = 3; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - int shortcutType = SHORTCUT_TYPE_NONE; - - // Set shortcutType from the intent extras - Bundle extras = getIntent().getExtras(); - if (extras != null) { - //noinspection WrongConstant - shortcutType = extras.getInt(KEY_SHORTCUT_TYPE, SHORTCUT_TYPE_NONE); - } - - switch (shortcutType) { - case SHORTCUT_TYPE_SHUFFLE_ALL: - startServiceWithPlaylist(MusicService.SHUFFLE_MODE_SHUFFLE, - new ShuffleAllPlaylist(getApplicationContext())); - DynamicShortcutManager.reportShortcutUsed(this, ShuffleAllShortcutType.getId()); - break; - case SHORTCUT_TYPE_TOP_TRACKS: - startServiceWithPlaylist(MusicService.SHUFFLE_MODE_NONE, - new MyTopTracksPlaylist(getApplicationContext())); - DynamicShortcutManager.reportShortcutUsed(this, TopTracksShortcutType.getId()); - break; - case SHORTCUT_TYPE_LAST_ADDED: - startServiceWithPlaylist(MusicService.SHUFFLE_MODE_NONE, - new LastAddedPlaylist(getApplicationContext())); - DynamicShortcutManager.reportShortcutUsed(this, LastAddedShortcutType.getId()); - break; - } - - finish(); - } - - private void startServiceWithPlaylist(int shuffleMode, Playlist playlist) { - Intent intent = new Intent(this, MusicService.class); - intent.setAction(ACTION_PLAY_PLAYLIST); - - Bundle bundle = new Bundle(); - bundle.putParcelable(INTENT_EXTRA_PLAYLIST, playlist); - bundle.putInt(INTENT_EXTRA_SHUFFLE_MODE, shuffleMode); - - intent.putExtras(bundle); - - startService(intent); - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.kt new file mode 100644 index 000000000..0fd4306b6 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/AppShortcutLauncherActivity.kt @@ -0,0 +1,79 @@ +package code.name.monkey.retromusic.appshortcuts + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import code.name.monkey.retromusic.Constants.ACTION_PLAY_PLAYLIST +import code.name.monkey.retromusic.Constants.INTENT_EXTRA_PLAYLIST +import code.name.monkey.retromusic.Constants.INTENT_EXTRA_SHUFFLE_MODE +import code.name.monkey.retromusic.appshortcuts.shortcuttype.LastAddedShortcutType +import code.name.monkey.retromusic.appshortcuts.shortcuttype.SearchShortCutType +import code.name.monkey.retromusic.appshortcuts.shortcuttype.ShuffleAllShortcutType +import code.name.monkey.retromusic.appshortcuts.shortcuttype.TopTracksShortcutType +import code.name.monkey.retromusic.model.Playlist +import code.name.monkey.retromusic.model.smartplaylist.LastAddedPlaylist +import code.name.monkey.retromusic.model.smartplaylist.MyTopTracksPlaylist +import code.name.monkey.retromusic.model.smartplaylist.ShuffleAllPlaylist +import code.name.monkey.retromusic.service.MusicService +import code.name.monkey.retromusic.ui.activities.SearchActivity + + +class AppShortcutLauncherActivity : Activity() { + + public override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + var shortcutType = SHORTCUT_TYPE_NONE + + // Set shortcutType from the intent extras + val extras = intent.extras + if (extras != null) { + shortcutType = extras.getInt(KEY_SHORTCUT_TYPE, SHORTCUT_TYPE_NONE) + } + + when (shortcutType) { + SHORTCUT_TYPE_SHUFFLE_ALL -> { + startServiceWithPlaylist(MusicService.SHUFFLE_MODE_SHUFFLE, + ShuffleAllPlaylist(applicationContext)) + DynamicShortcutManager.reportShortcutUsed(this, ShuffleAllShortcutType.id) + } + SHORTCUT_TYPE_TOP_TRACKS -> { + startServiceWithPlaylist(MusicService.SHUFFLE_MODE_NONE, + MyTopTracksPlaylist(applicationContext)) + DynamicShortcutManager.reportShortcutUsed(this, TopTracksShortcutType.id) + } + SHORTCUT_TYPE_LAST_ADDED -> { + startServiceWithPlaylist(MusicService.SHUFFLE_MODE_NONE, + LastAddedPlaylist(applicationContext)) + DynamicShortcutManager.reportShortcutUsed(this, LastAddedShortcutType.id) + } + SHORTCUT_TYPE_SEARCH -> { + startActivity(Intent(this, SearchActivity::class.java)) + DynamicShortcutManager.reportShortcutUsed(this, SearchShortCutType.id) + } + } + finish() + } + + private fun startServiceWithPlaylist(shuffleMode: Int, playlist: Playlist) { + val intent = Intent(this, MusicService::class.java) + intent.action = ACTION_PLAY_PLAYLIST + + val bundle = Bundle() + bundle.putParcelable(INTENT_EXTRA_PLAYLIST, playlist) + bundle.putInt(INTENT_EXTRA_SHUFFLE_MODE, shuffleMode) + + intent.putExtras(bundle) + + startService(intent) + } + + companion object { + const val KEY_SHORTCUT_TYPE = "code.name.monkey.retromusic.appshortcuts.ShortcutType" + const val SHORTCUT_TYPE_SHUFFLE_ALL = 0 + const val SHORTCUT_TYPE_TOP_TRACKS = 1 + const val SHORTCUT_TYPE_LAST_ADDED = 2 + const val SHORTCUT_TYPE_SEARCH = 3 + const val SHORTCUT_TYPE_NONE = 4 + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.java b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.java deleted file mode 100644 index 2c4975e38..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.java +++ /dev/null @@ -1,63 +0,0 @@ -package code.name.monkey.retromusic.appshortcuts; - -import android.annotation.TargetApi; -import android.content.Context; -import android.content.Intent; -import android.content.pm.ShortcutInfo; -import android.content.pm.ShortcutManager; -import android.graphics.drawable.Icon; -import android.os.Build; - -import java.util.Arrays; -import java.util.List; - -import code.name.monkey.retromusic.appshortcuts.shortcuttype.LastAddedShortcutType; -import code.name.monkey.retromusic.appshortcuts.shortcuttype.ShuffleAllShortcutType; -import code.name.monkey.retromusic.appshortcuts.shortcuttype.TopTracksShortcutType; - -/** - * @author Adrian Campos - */ - -@TargetApi(Build.VERSION_CODES.N_MR1) -public class DynamicShortcutManager { - - private Context context; - private ShortcutManager shortcutManager; - - public DynamicShortcutManager(Context context) { - this.context = context; - shortcutManager = this.context.getSystemService(ShortcutManager.class); - } - - public static ShortcutInfo createShortcut(Context context, String id, String shortLabel, String longLabel, Icon icon, Intent intent) { - return new ShortcutInfo.Builder(context, id) - .setShortLabel(shortLabel) - .setLongLabel(longLabel) - .setIcon(icon) - .setIntent(intent) - .build(); - } - - public static void reportShortcutUsed(Context context, String shortcutId) { - context.getSystemService(ShortcutManager.class).reportShortcutUsed(shortcutId); - } - - public void initDynamicShortcuts() { - if (shortcutManager.getDynamicShortcuts().size() == 0) { - shortcutManager.setDynamicShortcuts(getDefaultShortcuts()); - } - } - - public void updateDynamicShortcuts() { - shortcutManager.updateShortcuts(getDefaultShortcuts()); - } - - public List getDefaultShortcuts() { - return (Arrays.asList( - new ShuffleAllShortcutType(context).getShortcutInfo(), - new TopTracksShortcutType(context).getShortcutInfo(), - new LastAddedShortcutType(context).getShortcutInfo() - )); - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.kt new file mode 100644 index 000000000..5f59df7c8 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/DynamicShortcutManager.kt @@ -0,0 +1,56 @@ +package code.name.monkey.retromusic.appshortcuts + +import android.annotation.TargetApi +import android.content.Context +import android.content.Intent +import android.content.pm.ShortcutInfo +import android.content.pm.ShortcutManager +import android.graphics.drawable.Icon +import android.os.Build + +import java.util.Arrays + +import code.name.monkey.retromusic.appshortcuts.shortcuttype.LastAddedShortcutType +import code.name.monkey.retromusic.appshortcuts.shortcuttype.SearchShortCutType +import code.name.monkey.retromusic.appshortcuts.shortcuttype.ShuffleAllShortcutType +import code.name.monkey.retromusic.appshortcuts.shortcuttype.TopTracksShortcutType + +@TargetApi(Build.VERSION_CODES.N_MR1) +class DynamicShortcutManager(private val context: Context) { + private val shortcutManager: ShortcutManager = this.context.getSystemService(ShortcutManager::class.java) + + private val defaultShortcuts: List + get() = Arrays.asList( + SearchShortCutType(context).shortcutInfo, + ShuffleAllShortcutType(context).shortcutInfo, + TopTracksShortcutType(context).shortcutInfo, + LastAddedShortcutType(context).shortcutInfo + + ) + + fun initDynamicShortcuts() { + //if (shortcutManager.dynamicShortcuts.size == 0) { + shortcutManager.dynamicShortcuts = defaultShortcuts + //} + } + + fun updateDynamicShortcuts() { + shortcutManager.updateShortcuts(defaultShortcuts) + } + + companion object { + + fun createShortcut(context: Context, id: String, shortLabel: String, longLabel: String, icon: Icon, intent: Intent): ShortcutInfo { + return ShortcutInfo.Builder(context, id) + .setShortLabel(shortLabel) + .setLongLabel(longLabel) + .setIcon(icon) + .setIntent(intent) + .build() + } + + fun reportShortcutUsed(context: Context, shortcutId: String) { + context.getSystemService(ShortcutManager::class.java).reportShortcutUsed(shortcutId) + } + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.java b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.java deleted file mode 100644 index 28f16a7e4..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.java +++ /dev/null @@ -1,50 +0,0 @@ -package code.name.monkey.retromusic.appshortcuts.shortcuttype; - -import android.annotation.TargetApi; -import android.content.Context; -import android.content.Intent; -import android.content.pm.ShortcutInfo; -import android.os.Build; -import android.os.Bundle; - -import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity; - - -/** - * @author Adrian Campos - */ -@TargetApi(Build.VERSION_CODES.N_MR1) -public abstract class BaseShortcutType { - - static final String ID_PREFIX = "code.name.monkey.retromusic.appshortcuts.id."; - - Context context; - - public BaseShortcutType(Context context) { - this.context = context; - } - - static public String getId() { - return ID_PREFIX + "invalid"; - } - - abstract ShortcutInfo getShortcutInfo(); - - /** - * Creates an Intent that will launch MainActivtiy and immediately play {@param songs} in either shuffle or normal mode - * - * @param shortcutType Describes the type of shortcut to create (ShuffleAll, TopTracks, custom playlist, etc.) - * @return - */ - Intent getPlaySongsIntent(int shortcutType) { - Intent intent = new Intent(context, AppShortcutLauncherActivity.class); - intent.setAction(Intent.ACTION_VIEW); - - Bundle b = new Bundle(); - b.putInt(AppShortcutLauncherActivity.KEY_SHORTCUT_TYPE, shortcutType); - - intent.putExtras(b); - - return intent; - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.kt new file mode 100644 index 000000000..d988e27b6 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/BaseShortcutType.kt @@ -0,0 +1,41 @@ +package code.name.monkey.retromusic.appshortcuts.shortcuttype + +import android.annotation.TargetApi +import android.content.Context +import android.content.Intent +import android.content.pm.ShortcutInfo +import android.os.Build +import android.os.Bundle + +import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity + + +/** + * @author Adrian Campos + */ +@TargetApi(Build.VERSION_CODES.N_MR1) +abstract class BaseShortcutType(internal var context: Context) { + + internal abstract val shortcutInfo: ShortcutInfo + + /** + * Creates an Intent that will launch MainActivtiy and immediately play {@param songs} in either shuffle or normal mode + * + * @param shortcutType Describes the type of shortcut to create (ShuffleAll, TopTracks, custom playlist, etc.) + * @return + */ + internal fun getPlaySongsIntent(shortcutType: Int): Intent { + val intent = Intent(context, AppShortcutLauncherActivity::class.java) + intent.action = Intent.ACTION_VIEW + val b = Bundle() + b.putInt(AppShortcutLauncherActivity.KEY_SHORTCUT_TYPE, shortcutType) + intent.putExtras(b) + return intent + } + + companion object { + internal const val ID_PREFIX = "code.name.monkey.retromusic.appshortcuts.id." + val id: String + get() = ID_PREFIX + "invalid" + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.java b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.java deleted file mode 100644 index 72db3eeb8..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.java +++ /dev/null @@ -1,34 +0,0 @@ -package code.name.monkey.retromusic.appshortcuts.shortcuttype; - -import android.annotation.TargetApi; -import android.content.Context; -import android.content.pm.ShortcutInfo; -import android.os.Build; - -import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator; -import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity; - - -/** - * @author Adrian Campos - */ -@TargetApi(Build.VERSION_CODES.N_MR1) -public final class LastAddedShortcutType extends BaseShortcutType { - public LastAddedShortcutType(Context context) { - super(context); - } - - public static String getId() { - return ID_PREFIX + "last_added"; - } - - public ShortcutInfo getShortcutInfo() { - return new ShortcutInfo.Builder(context, getId()) - .setShortLabel(context.getString(R.string.app_shortcut_last_added_short)) - .setLongLabel(context.getString(R.string.app_shortcut_last_added_long)) - .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_last_added)) - .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_LAST_ADDED)) - .build(); - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.kt new file mode 100644 index 000000000..134ac6c81 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/LastAddedShortcutType.kt @@ -0,0 +1,27 @@ +package code.name.monkey.retromusic.appshortcuts.shortcuttype + +import android.annotation.TargetApi +import android.content.Context +import android.content.pm.ShortcutInfo +import android.os.Build +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator +import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity + +@TargetApi(Build.VERSION_CODES.N_MR1) +class LastAddedShortcutType(context: Context) : BaseShortcutType(context) { + + override val shortcutInfo: ShortcutInfo + get() = ShortcutInfo.Builder(context, id) + .setShortLabel(context.getString(R.string.app_shortcut_last_added_short)) + .setLongLabel(context.getString(R.string.app_shortcut_last_added_long)) + .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_last_added)) + .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_LAST_ADDED)) + .build() + + companion object { + + val id: String + get() = BaseShortcutType.ID_PREFIX + "last_added" + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/SearchShortCutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/SearchShortCutType.kt new file mode 100644 index 000000000..f7b749cad --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/SearchShortCutType.kt @@ -0,0 +1,26 @@ +package code.name.monkey.retromusic.appshortcuts.shortcuttype + +import android.annotation.TargetApi +import android.content.Context +import android.content.pm.ShortcutInfo +import android.os.Build +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator +import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity + +@TargetApi(Build.VERSION_CODES.N_MR1) +class SearchShortCutType(context: Context) : BaseShortcutType(context) { + companion object { + + val id: String + get() = BaseShortcutType.ID_PREFIX + "search" + } + + override val shortcutInfo: ShortcutInfo + get() = ShortcutInfo.Builder(context, id) + .setShortLabel(context.getString(R.string.action_search)) + .setLongLabel(context.getString(R.string.search_hint)) + .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_search)) + .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_SEARCH)) + .build() +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/ShuffleAllShortcutType.java b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/ShuffleAllShortcutType.java deleted file mode 100644 index be3ba0088..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/ShuffleAllShortcutType.java +++ /dev/null @@ -1,35 +0,0 @@ -package code.name.monkey.retromusic.appshortcuts.shortcuttype; - -import android.annotation.TargetApi; -import android.content.Context; -import android.content.pm.ShortcutInfo; -import android.os.Build; - -import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator; -import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity; - - - -/** - * @author Adrian Campos - */ -@TargetApi(Build.VERSION_CODES.N_MR1) -public final class ShuffleAllShortcutType extends BaseShortcutType { - public ShuffleAllShortcutType(Context context) { - super(context); - } - - public static String getId() { - return ID_PREFIX + "shuffle_all"; - } - - public ShortcutInfo getShortcutInfo() { - return new ShortcutInfo.Builder(context, getId()) - .setShortLabel(context.getString(R.string.app_shortcut_shuffle_all_short)) - .setLongLabel(context.getString(R.string.app_shortcut_shuffle_all_long)) - .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_shuffle_all)) - .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_SHUFFLE_ALL)) - .build(); - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/ShuffleAllShortcutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/ShuffleAllShortcutType.kt new file mode 100644 index 000000000..c8efddd1c --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/ShuffleAllShortcutType.kt @@ -0,0 +1,29 @@ +package code.name.monkey.retromusic.appshortcuts.shortcuttype + +import android.annotation.TargetApi +import android.content.Context +import android.content.pm.ShortcutInfo +import android.os.Build + +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator +import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity +import java.security.AccessController.getContext + +@TargetApi(Build.VERSION_CODES.N_MR1) +class ShuffleAllShortcutType(context: Context) : BaseShortcutType(context) { + + override val shortcutInfo: ShortcutInfo + get() = ShortcutInfo.Builder(context, id) + .setShortLabel(context.getString(R.string.app_shortcut_shuffle_all_short)) + .setLongLabel(context.getString(R.string.app_shortcut_shuffle_all_long)) + .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_shuffle_all)) + .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_SHUFFLE_ALL)) + .build() + + companion object { + + val id: String + get() = BaseShortcutType.ID_PREFIX + "shuffle_all" + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.java b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.java deleted file mode 100644 index 3e78db33c..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.java +++ /dev/null @@ -1,35 +0,0 @@ -package code.name.monkey.retromusic.appshortcuts.shortcuttype; - -import android.annotation.TargetApi; -import android.content.Context; -import android.content.pm.ShortcutInfo; -import android.os.Build; - -import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator; -import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity; - - - -/** - * @author Adrian Campos - */ -@TargetApi(Build.VERSION_CODES.N_MR1) -public final class TopTracksShortcutType extends BaseShortcutType { - public TopTracksShortcutType(Context context) { - super(context); - } - - public static String getId() { - return ID_PREFIX + "top_tracks"; - } - - public ShortcutInfo getShortcutInfo() { - return new ShortcutInfo.Builder(context, getId()) - .setShortLabel(context.getString(R.string.app_shortcut_top_tracks_short)) - .setLongLabel(context.getString(R.string.app_shortcut_top_tracks_long)) - .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_top_tracks)) - .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_TOP_TRACKS)) - .build(); - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.kt new file mode 100644 index 000000000..247c60a94 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/TopTracksShortcutType.kt @@ -0,0 +1,27 @@ +package code.name.monkey.retromusic.appshortcuts.shortcuttype + +import android.annotation.TargetApi +import android.content.Context +import android.content.pm.ShortcutInfo +import android.os.Build +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.appshortcuts.AppShortcutIconGenerator +import code.name.monkey.retromusic.appshortcuts.AppShortcutLauncherActivity + +@TargetApi(Build.VERSION_CODES.N_MR1) +class TopTracksShortcutType(context: Context) : BaseShortcutType(context) { + + override val shortcutInfo: ShortcutInfo + get() = ShortcutInfo.Builder(context, id) + .setShortLabel(context.getString(R.string.app_shortcut_top_tracks_short)) + .setLongLabel(context.getString(R.string.app_shortcut_top_tracks_long)) + .setIcon(AppShortcutIconGenerator.generateThemedIcon(context, R.drawable.ic_app_shortcut_top_tracks)) + .setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_TOP_TRACKS)) + .build() + + companion object { + + val id: String + get() = BaseShortcutType.ID_PREFIX + "top_tracks" + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt index f449893c2..fc7167e8c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt @@ -136,16 +136,7 @@ abstract class BaseAppWidget : AppWidgetProvider() { } protected fun composeRoundedRectPath(rect: RectF, tl: Float, tr: Float, bl: Float, br: Float): Path { - var tlf = tl - var trf = tr - var blf = bl - var brf = br val path = Path() - tlf = if (tl < 0) 0F else tl - trf = if (tr < 0) 0f else tr - blf = if (bl < 0) 0f else bl - brf = if (br < 0) 0f else br - path.moveTo(rect.left + tl, rect.top) path.lineTo(rect.right - tr, rect.top) path.quadTo(rect.right, rect.top, rect.right, rect.top + tr) diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/CastHelper.java b/app/src/main/java/code/name/monkey/retromusic/cast/CastHelper.java deleted file mode 100644 index a8951ee01..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/cast/CastHelper.java +++ /dev/null @@ -1,61 +0,0 @@ -package code.name.monkey.retromusic.cast; - -import android.net.Uri; - -import com.google.android.gms.cast.MediaInfo; -import com.google.android.gms.cast.MediaLoadOptions; -import com.google.android.gms.cast.MediaMetadata; -import com.google.android.gms.cast.framework.CastSession; -import com.google.android.gms.cast.framework.media.RemoteMediaClient; -import com.google.android.gms.common.images.WebImage; - -import java.net.MalformedURLException; -import java.net.URL; - -import code.name.monkey.retromusic.Constants; -import code.name.monkey.retromusic.model.Song; -import code.name.monkey.retromusic.util.RetroUtil; - -import static code.name.monkey.retromusic.Constants.CAST_SERVER_PORT; - -public class CastHelper { - - public static void startCasting(CastSession castSession, Song song) { - - String ipAddress = RetroUtil.getIPAddress(true); - URL baseUrl; - try { - baseUrl = new URL("https", ipAddress,CAST_SERVER_PORT, ""); - } catch (MalformedURLException e) { - e.printStackTrace(); - return; - } - - String songUrl = baseUrl.toString() + "/song?id=" + song.getId(); - String albumArtUrl = baseUrl.toString() + "/albumart?id=" + song.getAlbumId(); - - - MediaMetadata musicMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MUSIC_TRACK); - - musicMetadata.putString(MediaMetadata.KEY_TITLE, song.getTitle()); - musicMetadata.putString(MediaMetadata.KEY_ARTIST, song.getArtistName()); - musicMetadata.putString(MediaMetadata.KEY_ALBUM_TITLE, song.getAlbumName()); - musicMetadata.putInt(MediaMetadata.KEY_TRACK_NUMBER, song.getTrackNumber()); - musicMetadata.addImage(new WebImage(Uri.parse(albumArtUrl))); - - try { - MediaInfo mediaInfo = new MediaInfo.Builder(songUrl) - .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) - .setContentType("audio/mpeg") - .setMetadata(musicMetadata) - .setStreamDuration(song.getDuration()) - .build(); - RemoteMediaClient remoteMediaClient = castSession.getRemoteMediaClient(); - remoteMediaClient.load(mediaInfo, new MediaLoadOptions.Builder() - .build()); - //remoteMediaClient.load(mediaInfo, true, 0); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/CastOptionsProvider.java b/app/src/main/java/code/name/monkey/retromusic/cast/CastOptionsProvider.java deleted file mode 100644 index 9002bcf31..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/cast/CastOptionsProvider.java +++ /dev/null @@ -1,45 +0,0 @@ -package code.name.monkey.retromusic.cast; - -import android.content.Context; - -import com.google.android.gms.cast.framework.CastOptions; -import com.google.android.gms.cast.framework.OptionsProvider; -import com.google.android.gms.cast.framework.SessionProvider; -import com.google.android.gms.cast.framework.media.CastMediaOptions; -import com.google.android.gms.cast.framework.media.MediaIntentReceiver; -import com.google.android.gms.cast.framework.media.NotificationOptions; - -import java.util.ArrayList; -import java.util.List; - -import code.name.monkey.retromusic.R; - -public class CastOptionsProvider implements OptionsProvider { - @Override - public CastOptions getCastOptions(Context context) { - List buttonActions = new ArrayList<>(); - buttonActions.add(MediaIntentReceiver.ACTION_TOGGLE_PLAYBACK); - buttonActions.add(MediaIntentReceiver.ACTION_STOP_CASTING); - int[] compatButtonActionsIndicies = new int[]{ 0, 1 }; - - NotificationOptions notificationOptions = new NotificationOptions.Builder() - .setActions(buttonActions, compatButtonActionsIndicies) - .setTargetActivityClassName(ExpandedCastControlsActivity.class.getName()) - .build(); - - CastMediaOptions mediaOptions = new CastMediaOptions.Builder() - .setNotificationOptions(notificationOptions) - .setExpandedControllerActivityClassName(ExpandedCastControlsActivity.class.getName()) - .build(); - - return new CastOptions.Builder() - .setReceiverApplicationId(context.getString(R.string.cast_app_id)) - .setCastMediaOptions(mediaOptions) - .build(); - } - - @Override - public List getAdditionalSessionProviders(Context context) { - return null; - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/ExpandedCastControlsActivity.java b/app/src/main/java/code/name/monkey/retromusic/cast/ExpandedCastControlsActivity.java deleted file mode 100644 index b003314f7..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/cast/ExpandedCastControlsActivity.java +++ /dev/null @@ -1,28 +0,0 @@ -package code.name.monkey.retromusic.cast; - -import android.os.Bundle; -import android.view.Menu; -import android.view.View; - -import com.google.android.gms.cast.framework.CastButtonFactory; -import com.google.android.gms.cast.framework.media.widget.ExpandedControllerActivity; - -import code.name.monkey.retromusic.R; - - -public class ExpandedCastControlsActivity extends ExpandedControllerActivity { - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - super.onCreateOptionsMenu(menu); - getMenuInflater().inflate(R.menu.menu_expanded_controller, menu); - CastButtonFactory.setUpMediaRouteButton(this, menu, R.id.media_route_menu_item); - return true; - } - - @Override - protected void onCreate(Bundle bundle) { - super.onCreate(bundle); - getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/cast/WebServer.java b/app/src/main/java/code/name/monkey/retromusic/cast/WebServer.java deleted file mode 100644 index 172514de9..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/cast/WebServer.java +++ /dev/null @@ -1,77 +0,0 @@ -package code.name.monkey.retromusic.cast; - -import android.content.Context; -import android.net.Uri; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.util.Map; - -import code.name.monkey.retromusic.Constants; -import code.name.monkey.retromusic.util.RetroUtil; -import fi.iki.elonen.NanoHTTPD; - -import static code.name.monkey.retromusic.Constants.CAST_SERVER_PORT; - -public class WebServer extends NanoHTTPD { - - private Context context; - private Uri songUri, albumArtUri; - - public WebServer(Context context) { - super(CAST_SERVER_PORT); - this.context = context; - } - - @Override - public Response serve(String uri, Method method, - Map header, - Map parameters, - Map files) { - if (uri.contains("albumart")) { - //serve the picture - - String albumId = parameters.get("id"); - this.albumArtUri = RetroUtil.getAlbumArtUri(Long.parseLong(albumId)); - - if (albumArtUri != null) { - String mediasend = "image/jpg"; - InputStream fisAlbumArt = null; - try { - fisAlbumArt = context.getContentResolver().openInputStream(albumArtUri); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - Response.Status st = Response.Status.OK; - - //serve the song - return newChunkedResponse(st, mediasend, fisAlbumArt); - } - - } else if (uri.contains("song")) { - - String songId = parameters.get("id"); - this.songUri = RetroUtil.getSongUri(context, Long.parseLong(songId)); - - if (songUri != null) { - String mediasend = "audio/mp3"; - FileInputStream fisSong = null; - File song = new File(songUri.getPath()); - try { - fisSong = new FileInputStream(song); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - Response.Status st = Response.Status.OK; - - //serve the song - return newFixedLengthResponse(st, mediasend, fisSong, song.length()); - } - - } - return newFixedLengthResponse("Error"); - } - -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt index 5c7b8481d..9974aa4df 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt @@ -32,7 +32,7 @@ class AddToPlaylistDialog : RoundedBottomSheetDialogFragment() { actionAddPlaylist.setOnClickListener { val songs = arguments!!.getParcelableArrayList("songs") - CreatePlaylistDialog.create(songs).show(activity!!.supportFragmentManager, "ADD_TO_PLAYLIST") + CreatePlaylistDialog.create(songs!!).show(activity!!.supportFragmentManager, "ADD_TO_PLAYLIST") dismiss() } diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt index 47c1cc06e..b8ac3b63f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/DeleteSongsDialog.kt @@ -20,8 +20,8 @@ class DeleteSongsDialog : RoundedBottomSheetDialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) title.setTextColor(ThemeStore.textColorPrimary(context!!)) - MaterialUtil.setTint(actionDelete, true) - MaterialUtil.setTint(actionCancel, false) + MaterialUtil.setTint(actionDelete) + MaterialUtil.setTint(actionCancel) //noinspection unchecked,ConstantConditions val songs = arguments!!.getParcelableArrayList("songs") diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt index 57ab22aae..229073340 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/OptionsSheetDialogFragment.kt @@ -1,6 +1,7 @@ package code.name.monkey.retromusic.dialogs import android.content.Intent +import android.content.res.ColorStateList import android.graphics.Bitmap import android.os.Bundle import android.view.LayoutInflater @@ -57,7 +58,11 @@ class OptionsSheetDialogFragment : RoundedBottomSheetDialogFragment(), View.OnCl override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - actionBuyPro.visibility = if (!App.isProVersion) View.VISIBLE else View.GONE + actionBuyPro.let { + it.visibility = if (!App.isProVersion) View.VISIBLE else View.GONE + it.iconTint = ColorStateList.valueOf(ThemeStore.accentColor(it.context)) + it.setTextColor(ColorStateList.valueOf(ThemeStore.accentColor(it.context))) + } text!!.setTextColor(ThemeStore.textColorSecondary(context!!)) titleWelcome!!.setTextColor(ThemeStore.textColorPrimary(context!!)) titleWelcome!!.text = String.format("%s %s!", timeOfTheDay, PreferenceUtil.getInstance().userName) diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/BlurTransformation.kt b/app/src/main/java/code/name/monkey/retromusic/glide/BlurTransformation.kt index 603842f63..6efedceb1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/BlurTransformation.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/BlurTransformation.kt @@ -85,8 +85,8 @@ class BlurTransformation : BitmapTransformation { return StackBlur.blur(out, blurRadius) } - override fun equals(o: Any?): Boolean { - return o is BlurTransformation + override fun equals(other: Any?): Boolean { + return other is BlurTransformation } override fun hashCode(): Int { @@ -138,7 +138,7 @@ class BlurTransformation : BitmapTransformation { companion object { - val DEFAULT_BLUR_RADIUS = 5f - private val ID = "com.poupa.vinylmusicplayer.glide.BlurTransformation" + const val DEFAULT_BLUR_RADIUS = 5f + private const val ID = "code.name.monkey.retromusic.glide.BlurTransformation" } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.java b/app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.java index 018b1d622..1f7927bb9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.java +++ b/app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.java @@ -1,5 +1,7 @@ package code.name.monkey.retromusic.glide; +import androidx.annotation.NonNull; + import com.bumptech.glide.GenericTransitionOptions; import com.bumptech.glide.Priority; import com.bumptech.glide.RequestBuilder; @@ -8,11 +10,11 @@ import com.bumptech.glide.annotation.GlideOption; import com.bumptech.glide.annotation.GlideType; import com.bumptech.glide.load.Key; import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.signature.MediaStoreSignature; -import androidx.annotation.NonNull; import code.name.monkey.retromusic.App; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.glide.artistimage.ArtistImage; @@ -34,6 +36,7 @@ public final class RetroGlideExtension { public static void asBitmapPalette(RequestBuilder requestBuilder) { } + @NonNull @GlideOption public static RequestOptions artistOptions(@NonNull RequestOptions requestOptions, Artist artist) { return requestOptions @@ -46,11 +49,12 @@ public final class RetroGlideExtension { } @GlideOption + @NonNull public static RequestOptions songOptions(@NonNull RequestOptions requestOptions, Song song) { return requestOptions .diskCacheStrategy(DiskCacheStrategy.NONE) .error(R.drawable.default_album_art) - .placeholder(R.drawable.default_album_art) + //.placeholder(R.drawable.default_album_art) .signature(createSignature(song)); } @@ -93,4 +97,5 @@ public final class RetroGlideExtension { public static GenericTransitionOptions getDefaultTransition() { return new GenericTransitionOptions().transition(android.R.anim.fade_in); } + } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImage.kt b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImage.kt deleted file mode 100644 index 6ce2ac9ed..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImage.kt +++ /dev/null @@ -1,4 +0,0 @@ -package code.name.monkey.retromusic.glide.artistimage - - -class ArtistImage(val artistName: String, val skipOkHttpCache: Boolean) diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageFetcher.kt b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageFetcher.kt deleted file mode 100644 index a56bff64f..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageFetcher.kt +++ /dev/null @@ -1,98 +0,0 @@ -package code.name.monkey.retromusic.glide.artistimage - -import android.content.Context -import android.text.TextUtils -import code.name.monkey.retromusic.rest.LastFMRestClient -import code.name.monkey.retromusic.rest.model.LastFmArtist -import code.name.monkey.retromusic.util.LastFMUtil -import code.name.monkey.retromusic.util.MusicUtil -import code.name.monkey.retromusic.util.RetroUtil -import com.bumptech.glide.Priority -import com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher -import com.bumptech.glide.load.DataSource -import com.bumptech.glide.load.data.DataFetcher -import com.bumptech.glide.load.model.GlideUrl - -import okhttp3.OkHttpClient -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; -import java.io.InputStream - - -class ArtistImageFetcher(private val context: Context, private val lastFMRestClient: LastFMRestClient, private val okHttp: OkHttpClient, private val model: ArtistImage, width: Int, height: Int) : DataFetcher { - @Volatile - private var isCancelled: Boolean = false - private var call: Call? = null - private var streamFetcher: OkHttpStreamFetcher? = null - - - override fun getDataClass(): Class { - return InputStream::class.java - } - - - override fun getDataSource(): DataSource { - return DataSource.REMOTE - } - - override fun loadData(priority: Priority, callback: DataFetcher.DataCallback) { - try { - if (!MusicUtil.isArtistNameUnknown(model.artistName) && RetroUtil.isAllowedToDownloadMetadata(context)) { - call = lastFMRestClient.apiService.getArtistInfo(model.artistName, null, if (model.skipOkHttpCache) "no-cache" else null) - call!!.enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { - if (isCancelled) { - callback.onDataReady(null) - return - } - - val lastFmArtist = response.body() - if (lastFmArtist == null || lastFmArtist.artist == null || lastFmArtist.artist.image == null) { - callback.onLoadFailed(Exception("No artist image url found")) - return - } - - val url = LastFMUtil.getLargestArtistImageUrl(lastFmArtist.artist.image) - if (TextUtils.isEmpty(url) || TextUtils.isEmpty(url.trim { it <= ' ' })) { - callback.onLoadFailed(Exception("No artist image url found")) - return - } - - streamFetcher = OkHttpStreamFetcher(okHttp, GlideUrl(url)) - streamFetcher!!.loadData(priority, callback) - } - - override fun onFailure(call: Call, throwable: Throwable) { - callback.onLoadFailed(Exception(throwable)) - } - }) - - - } - } catch (e: Exception) { - callback.onLoadFailed(e) - } - - } - - override fun cleanup() { - if (streamFetcher != null) { - streamFetcher!!.cleanup() - } - } - - override fun cancel() { - isCancelled = true - if (call != null) { - call!!.cancel() - } - if (streamFetcher != null) { - streamFetcher!!.cancel() - } - } - - companion object { - val TAG: String = ArtistImageFetcher::class.java.simpleName - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt index 8870e21db..f8cde16f4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt @@ -1,17 +1,109 @@ package code.name.monkey.retromusic.glide.artistimage import android.content.Context +import android.text.TextUtils import code.name.monkey.retromusic.rest.LastFMRestClient +import code.name.monkey.retromusic.rest.model.LastFmArtist +import code.name.monkey.retromusic.util.LastFMUtil +import code.name.monkey.retromusic.util.MusicUtil +import code.name.monkey.retromusic.util.RetroUtil +import com.bumptech.glide.Priority +import com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher +import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.Options +import com.bumptech.glide.load.data.DataFetcher +import com.bumptech.glide.load.model.GlideUrl import com.bumptech.glide.load.model.ModelLoader import com.bumptech.glide.load.model.ModelLoaderFactory import com.bumptech.glide.load.model.MultiModelLoaderFactory import com.bumptech.glide.signature.ObjectKey import okhttp3.OkHttpClient +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response import java.io.InputStream import java.util.concurrent.TimeUnit +class ArtistImage(val artistName: String, val skipOkHttpCache: Boolean) + +class ArtistImageFetcher(private val context: Context, private val lastFMRestClient: LastFMRestClient, private val okHttp: OkHttpClient, private val model: ArtistImage, width: Int, height: Int) : DataFetcher { + @Volatile + private var isCancelled: Boolean = false + private var call: Call? = null + private var streamFetcher: OkHttpStreamFetcher? = null + + + override fun getDataClass(): Class { + return InputStream::class.java + } + + + override fun getDataSource(): DataSource { + return DataSource.REMOTE + } + + override fun loadData(priority: Priority, callback: DataFetcher.DataCallback) { + try { + if (!MusicUtil.isArtistNameUnknown(model.artistName) && RetroUtil.isAllowedToDownloadMetadata(context)) { + call = lastFMRestClient.apiService.getArtistInfo(model.artistName, null, if (model.skipOkHttpCache) "no-cache" else null) + call!!.enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + if (isCancelled) { + callback.onDataReady(null) + return + } + + val lastFmArtist = response.body() + if (lastFmArtist == null || lastFmArtist.artist == null || lastFmArtist.artist.image == null) { + callback.onLoadFailed(Exception("No artist image url found")) + return + } + + val url = LastFMUtil.getLargestArtistImageUrl(lastFmArtist.artist.image) + if (TextUtils.isEmpty(url) || TextUtils.isEmpty(url.trim { it <= ' ' })) { + callback.onLoadFailed(Exception("No artist image url found")) + return + } + + streamFetcher = OkHttpStreamFetcher(okHttp, GlideUrl(url)) + streamFetcher!!.loadData(priority, callback) + } + + override fun onFailure(call: Call, throwable: Throwable) { + callback.onLoadFailed(Exception(throwable)) + } + }) + + + } + } catch (e: Exception) { + callback.onLoadFailed(e) + } + + } + + override fun cleanup() { + if (streamFetcher != null) { + streamFetcher!!.cleanup() + } + } + + override fun cancel() { + isCancelled = true + if (call != null) { + call!!.cancel() + } + if (streamFetcher != null) { + streamFetcher!!.cancel() + } + } + + companion object { + val TAG: String = ArtistImageFetcher::class.java.simpleName + } +} + class ArtistImageLoader(private val context: Context, private val lastFMClient: LastFMRestClient, private val okhttp: OkHttpClient) : ModelLoader { override fun buildLoadData(model: ArtistImage, width: Int, height: Int, options: Options): ModelLoader.LoadData? { diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCover.kt b/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCover.kt deleted file mode 100644 index abf89e1e6..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCover.kt +++ /dev/null @@ -1,4 +0,0 @@ -package code.name.monkey.retromusic.glide.audiocover - - -class AudioFileCover(val filePath: String) diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCoverFetcher.kt b/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCoverFetcher.kt deleted file mode 100644 index 434b6e8c0..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCoverFetcher.kt +++ /dev/null @@ -1,92 +0,0 @@ -package code.name.monkey.retromusic.glide.audiocover - -import android.media.MediaMetadataRetriever -import com.bumptech.glide.Priority -import com.bumptech.glide.load.DataSource -import com.bumptech.glide.load.data.DataFetcher -import org.jaudiotagger.audio.mp3.MP3File -import java.io.* - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -class AudioFileCoverFetcher(private val model: AudioFileCover) : DataFetcher { - private var stream: FileInputStream? = null - - override fun loadData(priority: Priority, callback: DataFetcher.DataCallback) { - val retriever = MediaMetadataRetriever() - val data: InputStream? - try { - retriever.setDataSource(model.filePath) - val picture = retriever.embeddedPicture - if (picture != null) { - data = ByteArrayInputStream(picture) - } else { - data = fallback(model.filePath) - } - callback.onDataReady(data) - } catch (e: FileNotFoundException) { - callback.onLoadFailed(e) - } finally { - retriever.release() - } - } - - - override fun getDataClass(): Class { - return InputStream::class.java - } - - - override fun getDataSource(): DataSource { - return DataSource.LOCAL - } - - @Throws(FileNotFoundException::class) - private fun fallback(path: String): InputStream? { - try { - val mp3File = MP3File(path) - if (mp3File.hasID3v2Tag()) { - val art = mp3File.tag.firstArtwork - if (art != null) { - val imageData = art.binaryData - return ByteArrayInputStream(imageData) - } - } - // If there are any exceptions, we ignore them and continue to the other fallback method - } catch (ignored: Exception) { - } - - // Method 2: look for album art in external files - val parent = File(path).parentFile - for (fallback in FALLBACKS) { - val cover = File(parent, fallback) - if (cover.exists()) { - stream = FileInputStream(cover) - return stream - } - } - return null - } - - override fun cleanup() { - // already cleaned up in loadData and ByteArrayInputStream will be GC'd - if (stream != null) { - try { - stream!!.close() - } catch (ignore: IOException) { - // can't do much about it - } - - } - } - - override fun cancel() { - // cannot cancel - } - - companion object { - - private val FALLBACKS = arrayOf("cover.jpg", "album.jpg", "folder.jpg", "cover.png", "album.png", "folder.png") - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCoverLoader.kt b/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCoverLoader.kt index c1bf3a6dc..6819fac62 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCoverLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/audiocover/AudioFileCoverLoader.kt @@ -1,14 +1,102 @@ package code.name.monkey.retromusic.glide.audiocover +import android.media.MediaMetadataRetriever +import com.bumptech.glide.Priority +import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.Options +import com.bumptech.glide.load.data.DataFetcher import com.bumptech.glide.load.model.ModelLoader import com.bumptech.glide.load.model.ModelLoader.LoadData import com.bumptech.glide.load.model.ModelLoaderFactory import com.bumptech.glide.load.model.MultiModelLoaderFactory import com.bumptech.glide.signature.ObjectKey -import java.io.InputStream +import org.jaudiotagger.audio.mp3.MP3File +import java.io.* +class AudioFileCover(val filePath: String) + +class AudioFileCoverFetcher(private val model: AudioFileCover) : DataFetcher { + private var stream: FileInputStream? = null + + override fun loadData(priority: Priority, callback: DataFetcher.DataCallback) { + val retriever = MediaMetadataRetriever() + val data: InputStream? + try { + retriever.setDataSource(model.filePath) + val picture = retriever.embeddedPicture + if (picture != null) { + data = ByteArrayInputStream(picture) + } else { + data = fallback(model.filePath) + } + callback.onDataReady(data) + } catch (e: FileNotFoundException) { + callback.onLoadFailed(e) + } finally { + retriever.release() + } + } + + + override fun getDataClass(): Class { + return InputStream::class.java + } + + + override fun getDataSource(): DataSource { + return DataSource.LOCAL + } + + @Throws(FileNotFoundException::class) + private fun fallback(path: String): InputStream? { + try { + val mp3File = MP3File(path) + if (mp3File.hasID3v2Tag()) { + val art = mp3File.tag.firstArtwork + if (art != null) { + val imageData = art.binaryData + return ByteArrayInputStream(imageData) + } + } + // If there are any exceptions, we ignore them and continue to the other fallback method + } catch (ignored: Exception) { + } + + // Method 2: look for album art in external files + val parent = File(path).parentFile + for (fallback in FALLBACKS) { + val cover = File(parent, fallback) + if (cover.exists()) { + stream = FileInputStream(cover) + return stream + } + } + return null + } + + override fun cleanup() { + // already cleaned up in loadData and ByteArrayInputStream will be GC'd + if (stream != null) { + try { + stream!!.close() + } catch (ignore: IOException) { + // can't do much about it + } + + } + } + + override fun cancel() { + // cannot cancel + } + + companion object { + + private val FALLBACKS = arrayOf("cover.jpg", "album.jpg", "folder.jpg", "cover.png", "album.png", "folder.png") + } +} + class AudioFileCoverLoader : ModelLoader { override fun buildLoadData(model: AudioFileCover, width: Int, height: Int, options: Options): LoadData? { diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteResource.kt b/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteResource.kt index 377dd7398..d006ff349 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteResource.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteResource.kt @@ -1,8 +1,33 @@ package code.name.monkey.retromusic.glide.palette +import android.graphics.Bitmap +import android.widget.ImageView +import androidx.palette.graphics.Palette +import code.name.monkey.retromusic.util.RetroColorUtil +import com.bumptech.glide.load.Options import com.bumptech.glide.load.engine.Resource +import com.bumptech.glide.load.resource.transcode.ResourceTranscoder +import com.bumptech.glide.request.target.ImageViewTarget import com.bumptech.glide.util.Util +class BitmapPaletteTranscoder : ResourceTranscoder { + override fun transcode(bitmapResource: Resource, options: Options): Resource? { + val bitmap = bitmapResource.get() + val bitmapPaletteWrapper = BitmapPaletteWrapper(bitmap, RetroColorUtil.generatePalette(bitmap)!!) + return BitmapPaletteResource(bitmapPaletteWrapper) + } +} + +class BitmapPaletteWrapper(val bitmap: Bitmap, val palette: Palette) + +open class BitmapPaletteTarget(view: ImageView) : ImageViewTarget(view) { + + override fun setResource(bitmapPaletteWrapper: BitmapPaletteWrapper?) { + if (bitmapPaletteWrapper != null) { + view.setImageBitmap(bitmapPaletteWrapper.bitmap) + } + } +} class BitmapPaletteResource(private val bitmapPaletteWrapper: BitmapPaletteWrapper) : Resource { diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteTarget.kt b/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteTarget.kt deleted file mode 100644 index e120d3e36..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteTarget.kt +++ /dev/null @@ -1,14 +0,0 @@ -package code.name.monkey.retromusic.glide.palette - -import android.widget.ImageView - -import com.bumptech.glide.request.target.ImageViewTarget - -open class BitmapPaletteTarget(view: ImageView) : ImageViewTarget(view) { - - override fun setResource(bitmapPaletteWrapper: BitmapPaletteWrapper?) { - if (bitmapPaletteWrapper != null) { - view.setImageBitmap(bitmapPaletteWrapper.bitmap) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteTranscoder.kt b/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteTranscoder.kt deleted file mode 100644 index 513f76bd6..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteTranscoder.kt +++ /dev/null @@ -1,16 +0,0 @@ -package code.name.monkey.retromusic.glide.palette - - -import android.graphics.Bitmap -import code.name.monkey.retromusic.util.RetroColorUtil -import com.bumptech.glide.load.Options -import com.bumptech.glide.load.engine.Resource -import com.bumptech.glide.load.resource.transcode.ResourceTranscoder - -class BitmapPaletteTranscoder : ResourceTranscoder { - override fun transcode(bitmapResource: Resource, options: Options): Resource? { - val bitmap = bitmapResource.get() - val bitmapPaletteWrapper = BitmapPaletteWrapper(bitmap, RetroColorUtil.generatePalette(bitmap)!!) - return BitmapPaletteResource(bitmapPaletteWrapper) - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteWrapper.kt b/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteWrapper.kt deleted file mode 100644 index aab11d464..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/glide/palette/BitmapPaletteWrapper.kt +++ /dev/null @@ -1,6 +0,0 @@ -package code.name.monkey.retromusic.glide.palette - -import android.graphics.Bitmap -import androidx.palette.graphics.Palette - -class BitmapPaletteWrapper(val bitmap: Bitmap, val palette: Palette) 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 cec5bd455..36923f995 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 @@ -12,13 +12,10 @@ import android.provider.MediaStore import android.util.Log import android.widget.Toast import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.App import code.name.monkey.retromusic.loaders.SongLoader import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.PreferenceUtil -import com.google.android.gms.cast.framework.CastContext -import com.google.android.gms.cast.framework.CastSession import io.reactivex.schedulers.Schedulers import java.io.File import java.util.* @@ -28,19 +25,6 @@ object MusicPlayerRemote { val TAG = MusicPlayerRemote::class.java.simpleName private val mConnectionMap = WeakHashMap() var musicService: MusicService? = null - private var playbackLocation = PlaybackLocation.LOCAL - - - private val castSession: CastSession? - get() { - val castSession = CastContext.getSharedInstance(App.instance).sessionManager.currentCastSession - if (castSession != null) { - playbackLocation = PlaybackLocation.REMOTE - } else { - playbackLocation = PlaybackLocation.LOCAL - } - return castSession - } val isPlaying: Boolean get() = musicService != null && musicService!!.isPlaying diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/AboutActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/AboutActivity.kt index bbbf4d6fc..3f4034ab7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/AboutActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/AboutActivity.kt @@ -88,7 +88,7 @@ class AboutActivity : AbsBaseActivity(), View.OnClickListener { toolbar.setBackgroundColor(ThemeStore.primaryColor(this)) setSupportActionBar(toolbar) title = null - ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this)) + ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.textColorSecondary(this)) } private fun openUrl(url: String) { @@ -161,8 +161,7 @@ class AboutActivity : AbsBaseActivity(), View.OnClickListener { .setText(String.format(getString(R.string.app_share), packageName)) .intent if (shareIntent.resolveActivity(packageManager) != null) { - startActivity( - Intent.createChooser(shareIntent, resources.getText(R.string.action_share))) + startActivity(Intent.createChooser(shareIntent, resources.getText(R.string.action_share))) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/AlbumDetailsActivity.kt index 1bf65fa26..2b854ebff 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/AlbumDetailsActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.transition.Slide import android.view.* import android.view.animation.AnimationUtils +import android.widget.ImageView import androidx.core.app.ActivityCompat import androidx.core.util.Pair import androidx.core.widget.NestedScrollView @@ -39,6 +40,9 @@ import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.RetroUtil import com.google.android.material.appbar.AppBarLayout +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.CompositeDisposable +import io.reactivex.schedulers.Schedulers import kotlinx.android.synthetic.main.activity_album.* import kotlinx.android.synthetic.main.activity_album_content.* import java.util.* @@ -47,6 +51,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac private lateinit var albumDetailsPresenter: AlbumDetailsPresenter private lateinit var simpleSongAdapter: SimpleSongAdapter + private var disposable = CompositeDisposable() var album: Album? = null private set @@ -68,11 +73,11 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac setDrawUnderStatusBar() setupWindowTransition() super.onCreate(savedInstanceState) + toggleBottomNavigationView(true) setLightNavigationBar(true) setNavigationbarColorAuto() - toggleBottomNavigationView(true) ActivityCompat.postponeEnterTransition(this) @@ -95,6 +100,8 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac } actionShuffleAll.setOnClickListener { MusicPlayerRemote.openAndShuffleQueue(album!!.songs!!, true) } + + artistImage = findViewById(R.id.artistImage) artistImage.setOnClickListener { val artistPairs = arrayOf>(Pair.create(image, resources.getString(R.string.transition_artist_image))) NavigationUtil.goToArtist(this, album!!.artistId, *artistPairs) @@ -134,24 +141,22 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac toolbar!!.layoutParams = params } - if (appBarLayout != null) { - appBarLayout!!.apply { - addOnOffsetChangedListener(object : AppBarStateChangeListener() { - override fun onStateChanged(appBarLayout: AppBarLayout, state: AppBarStateChangeListener.State) { - val color: Int = when (state) { - AppBarStateChangeListener.State.COLLAPSED -> { - setLightStatusbar(ColorUtil.isColorLight(ThemeStore.primaryColor(this@AlbumDetailsActivity))) - ThemeStore.primaryColor(this@AlbumDetailsActivity) - } - AppBarStateChangeListener.State.EXPANDED, AppBarStateChangeListener.State.IDLE -> { - setLightStatusbar(false) - Color.TRANSPARENT - } + appBarLayout!!.apply { + addOnOffsetChangedListener(object : AppBarStateChangeListener() { + override fun onStateChanged(appBarLayout: AppBarLayout, state: AppBarStateChangeListener.State) { + val color: Int = when (state) { + AppBarStateChangeListener.State.COLLAPSED -> { + setLightStatusbar(ColorUtil.isColorLight(ThemeStore.primaryColor(this@AlbumDetailsActivity))) + ThemeStore.primaryColor(this@AlbumDetailsActivity) + } + AppBarStateChangeListener.State.EXPANDED, AppBarStateChangeListener.State.IDLE -> { + setLightStatusbar(false) + Color.TRANSPARENT } - ToolbarContentTintHelper.setToolbarContentColorBasedOnToolbarColor(this@AlbumDetailsActivity, toolbar, color) } - }) - } + ToolbarContentTintHelper.setToolbarContentColorBasedOnToolbarColor(this@AlbumDetailsActivity, toolbar, color) + } + }) } } @@ -160,6 +165,11 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac albumDetailsPresenter.unsubscribe() } + override fun onDestroy() { + super.onDestroy() + disposable.dispose() + } + override fun loading() { } @@ -188,33 +198,42 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsContrac simpleSongAdapter.swapDataSet(list.songs) } + private lateinit var artistImage: ImageView + private fun loadMoreFrom(album: Album) { - if (artistImage != null) { - /*ArtistGlideRequest.Builder.from(Glide.with(this), - ArtistLoader.getArtist(this, album.artistId).blockingFirst()) - .forceDownload(false) - .generatePalette(this).build() - .dontAnimate() - .into(object : RetroMusicColoredTarget(artistImage as CircularImageView) { - override fun onColorReady(color: Int) { - //setColors(color); - } - })*/ - } + disposable.add(ArtistLoader.getArtist(this, album.artistId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .map { + GlideApp.with(this@AlbumDetailsActivity) + .asBitmapPalette() + .load(RetroGlideExtension.getArtistModel(it)) + .transition(RetroGlideExtension.getDefaultTransition()) + .artistOptions(it) + .dontAnimate() + .into(object : RetroMusicColoredTarget(artistImage) { + override fun onColorReady(color: Int) { - val albums = ArtistLoader.getArtist(this, album.artistId).blockingFirst().albums - albums!!.remove(album) - if (!albums.isEmpty()) { - moreTitle.visibility = View.VISIBLE - moreRecyclerView.visibility = View.VISIBLE - } else { - return - } - moreTitle.text = String.format("More from %s", album.artistName) + } + }) + return@map it.albums!! + } + .subscribe { - val albumAdapter = HorizontalAlbumAdapter(this, albums, false, null) - moreRecyclerView.layoutManager = GridLayoutManager(this, 1, GridLayoutManager.HORIZONTAL, false) - moreRecyclerView.adapter = albumAdapter + it.remove(album) + if (!it.isEmpty()) { + moreTitle.visibility = View.VISIBLE + moreRecyclerView.visibility = View.VISIBLE + } else { + return@subscribe + } + moreTitle.text = String.format("More from %s", album.artistName) + + val albumAdapter = HorizontalAlbumAdapter(this, it, false, null) + moreRecyclerView.layoutManager = GridLayoutManager(this, 1, GridLayoutManager.HORIZONTAL, false) + moreRecyclerView.adapter = albumAdapter + + }) } private fun loadAlbumCover() { diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/ArtistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/ArtistDetailActivity.kt index b4d7d9920..b7f0f8a01 100755 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/ArtistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/ArtistDetailActivity.kt @@ -55,7 +55,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac private var albumAdapter: AlbumAdapter? = null private var forceDownload: Boolean = false - private fun setupWindowTransistion() { + private fun setupWindowTransitions() { val slide = Slide(Gravity.BOTTOM) slide.interpolator = AnimationUtils.loadInterpolator(this, android.R.interpolator.linear_out_slow_in) window.enterTransition = slide @@ -68,7 +68,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac override fun onCreate(savedInstanceState: Bundle?) { setDrawUnderStatusBar() - setupWindowTransistion() + setupWindowTransitions() super.onCreate(savedInstanceState) @@ -143,15 +143,14 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac if (appBarLayout != null) { appBarLayout!!.addOnOffsetChangedListener(object : AppBarStateChangeListener() { override fun onStateChanged(appBarLayout: AppBarLayout, state: AppBarStateChangeListener.State) { - val color: Int - when (state) { + val color: Int = when (state) { AppBarStateChangeListener.State.COLLAPSED -> { setLightStatusbar(ColorUtil.isColorLight(ThemeStore.primaryColor(appBarLayout.context))) - color = ThemeStore.primaryColor(appBarLayout.context) + ThemeStore.primaryColor(appBarLayout.context) } AppBarStateChangeListener.State.EXPANDED, AppBarStateChangeListener.State.IDLE -> { setLightStatusbar(false) - color = Color.TRANSPARENT + Color.TRANSPARENT } } @@ -204,8 +203,8 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac ActivityCompat.startPostponedEnterTransition(this) } - override fun showData(artist: Artist) { - setArtist(artist) + override fun showData(list: Artist) { + setArtist(list) } private fun getArtist(): Artist { @@ -296,7 +295,6 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac actionShuffleAll.setColor(textColor) - findViewById(R.id.root).setBackgroundColor(ThemeStore.primaryColor(this)) } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/LyricsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/LyricsActivity.kt index 7aa0640da..0b0072a8b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/LyricsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/LyricsActivity.kt @@ -10,6 +10,7 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentStatePagerAdapter +import androidx.viewpager.widget.ViewPager import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.App @@ -23,6 +24,7 @@ import code.name.monkey.retromusic.ui.activities.tageditor.WriteTagsAsyncTask import code.name.monkey.retromusic.ui.fragments.base.AbsMusicServiceFragment import code.name.monkey.retromusic.util.LyricUtil import code.name.monkey.retromusic.util.MusicUtil +import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.RetroUtil import com.afollestad.materialdialogs.MaterialDialog import kotlinx.android.synthetic.main.activity_lyrics.* @@ -32,7 +34,19 @@ import org.jaudiotagger.tag.FieldKey import java.io.File import java.util.* -class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener { +class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener, ViewPager.OnPageChangeListener { + override fun onPageScrollStateChanged(state: Int) { + + } + + override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { + + } + + override fun onPageSelected(position: Int) { + PreferenceUtil.getInstance().lyricsOptions = position + } + override fun onClick(v: View?) { when (viewPager.currentItem) { 0 -> showSyncedLyrics() @@ -41,7 +55,7 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener { } private lateinit var song: Song - private var lyrics: Lyrics? = null + private var lyricsString: String? = null private val googleSearchLrcUrl: String get() { @@ -73,7 +87,10 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener { viewPager.apply { adapter = PagerAdapter(supportFragmentManager) + currentItem = PreferenceUtil.getInstance().lyricsOptions + addOnPageChangeListener(this@LyricsActivity) } + tabs.apply { setupWithViewPager(viewPager) setSelectedTabIndicator(TintHelper.createTintedDrawable(ContextCompat.getDrawable(this@LyricsActivity, R.drawable.tab_indicator), ThemeStore.accentColor(this@LyricsActivity))) @@ -132,10 +149,10 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener { } private fun showLyricsSaveDialog() { - val content: String = if (lyrics == null) { + val content: String = if (lyricsString == null) { "" } else { - lyrics!!.data + lyricsString!! } MaterialDialog.Builder(this) .title("Add lyrics") @@ -163,155 +180,160 @@ class LyricsActivity : AbsMusicServiceActivity(), View.OnClickListener { baseUrl += query return baseUrl } -} -class PagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) { - override fun getItem(position: Int): Fragment { - return when (position) { - 0 -> SyncedLyricsFragment() - 1 -> OfflineLyricsFragment() - else -> { - SyncedLyricsFragment() + class PagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) { + override fun getItem(position: Int): Fragment { + return when (position) { + 0 -> SyncedLyricsFragment() + 1 -> OfflineLyricsFragment() + else -> SyncedLyricsFragment() } } - } - override fun getPageTitle(position: Int): CharSequence? { - return when (position) { - 0 -> App.context.getString(R.string.synced_lyrics) - 1 -> App.context.getString(R.string.normal_lyrics) - else -> { - App.context.getString(R.string.synced_lyrics) - } - } - } - - override fun getCount(): Int { - return 2 - } - -} - -class OfflineLyricsFragment : AbsMusicServiceFragment() { - - private var updateLyricsAsyncTask: AsyncTask<*, *, *>? = null - private var lyrics: Lyrics? = null - - @SuppressLint("StaticFieldLeak") - private fun loadSongLyrics() { - if (updateLyricsAsyncTask != null) { - updateLyricsAsyncTask!!.cancel(false) - } - val song = MusicPlayerRemote.currentSong - updateLyricsAsyncTask = object : AsyncTask() { - override fun doInBackground(vararg params: Void?): Lyrics? { - val data = MusicUtil.getLyrics(song) - return if (TextUtils.isEmpty(data)) { - null - } else Lyrics.parse(song, data) - } - - override fun onPreExecute() { - super.onPreExecute() - lyrics = null - } - - override fun onPostExecute(l: Lyrics?) { - lyrics = l - offlineLyrics.visibility = View.VISIBLE - if (l == null) { - offlineLyrics.setText(R.string.no_lyrics_found) - return + override fun getPageTitle(position: Int): CharSequence? { + return when (position) { + 0 -> App.context.getString(R.string.synced_lyrics) + 1 -> App.context.getString(R.string.normal_lyrics) + else -> { + App.context.getString(R.string.synced_lyrics) } - offlineLyrics.text = l.data } + } - override fun onCancelled(s: Lyrics?) { - onPostExecute(null) + override fun getCount(): Int { + return 2 + } + + } + + abstract class BaseLyricsFragment : AbsMusicServiceFragment() { + abstract fun upDateSong() + + override fun onPlayingMetaChanged() { + super.onPlayingMetaChanged() + upDateSong() + } + + override fun onServiceConnected() { + super.onServiceConnected() + upDateSong() + } + + } + + class OfflineLyricsFragment : BaseLyricsFragment() { + override fun upDateSong() { + loadSongLyrics() + } + + private var updateLyricsAsyncTask: AsyncTask<*, *, *>? = null + private var lyrics: Lyrics? = null + + @SuppressLint("StaticFieldLeak") + private fun loadSongLyrics() { + if (updateLyricsAsyncTask != null) { + updateLyricsAsyncTask!!.cancel(false) } - }.execute() - } + val song = MusicPlayerRemote.currentSong + updateLyricsAsyncTask = object : AsyncTask() { + override fun doInBackground(vararg params: Void?): Lyrics? { + val data = MusicUtil.getLyrics(song) + return if (TextUtils.isEmpty(data)) { + null + } else Lyrics.parse(song, data) + } - override fun onDestroyView() { - super.onDestroyView() - if (updateLyricsAsyncTask != null && !updateLyricsAsyncTask!!.isCancelled) { - updateLyricsAsyncTask!!.cancel(true) + override fun onPreExecute() { + super.onPreExecute() + lyrics = null + } + + override fun onPostExecute(l: Lyrics?) { + lyrics = l + offlineLyrics.visibility = View.VISIBLE + if (l == null) { + offlineLyrics.setText(R.string.no_lyrics_found) + return + } + (activity as LyricsActivity).lyricsString = l.data + offlineLyrics.text = l.data + } + + override fun onCancelled(s: Lyrics?) { + onPostExecute(null) + } + }.execute() + } + + override fun onDestroyView() { + super.onDestroyView() + if (updateLyricsAsyncTask != null && !updateLyricsAsyncTask!!.isCancelled) { + updateLyricsAsyncTask!!.cancel(true) + } + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_lyrics, container, false) } } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - loadSongLyrics() - } + class SyncedLyricsFragment : BaseLyricsFragment(), MusicProgressViewUpdateHelper.Callback { + override fun upDateSong() { + loadLRCLyrics() + } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_lyrics, container, false) - } -} + private lateinit var updateHelper: MusicProgressViewUpdateHelper + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_synced, container, false) + } -class SyncedLyricsFragment : AbsMusicServiceFragment(), MusicProgressViewUpdateHelper.Callback { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + updateHelper = MusicProgressViewUpdateHelper(this, 500, 1000) + } - private lateinit var updateHelper: MusicProgressViewUpdateHelper - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_synced, container, false) - } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupLyricsView() + } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - updateHelper = MusicProgressViewUpdateHelper(this, 500, 1000) - } + private fun setupLyricsView() { + lyricsView.apply { + setOnPlayerClickListener { progress, _ -> MusicPlayerRemote.seekTo(progress.toInt()) } + setDefaultColor(ContextCompat.getColor(context, R.color.md_grey_400)) + setHintColor(ThemeStore.textColorPrimary(context)) + setHighLightColor(ThemeStore.textColorPrimary(context)) + setTextSize(RetroUtil.convertDpToPixel(18f, context).toInt()) + } + } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - setupLyricsView() - } + override fun onResume() { + super.onResume() + updateHelper.start() + } - private fun setupLyricsView() { - lyricsView.apply { - setOnPlayerClickListener { progress, _ -> MusicPlayerRemote.seekTo(progress.toInt()) } - setDefaultColor(ContextCompat.getColor(context, R.color.md_grey_400)) - setHintColor(ThemeStore.textColorPrimary(context)) - setHighLightColor(ThemeStore.textColorPrimary(context)) - setTextSize(RetroUtil.convertDpToPixel(18f, context).toInt()) + override fun onPause() { + super.onPause() + updateHelper.stop() + } + + override fun onUpdateProgressViews(progress: Int, total: Int) { + lyricsView.setCurrentTimeMillis(progress.toLong()) + } + + private fun loadLRCLyrics() { + val song = MusicPlayerRemote.currentSong + if (LyricUtil.isLrcFileExist(song.title, song.artistName)) { + showLyricsLocal(LyricUtil.getLocalLyricFile(song.title, song.artistName)) + } + } + + private fun showLyricsLocal(file: File?) { + if (file == null) { + lyricsView.reset() + } else { + lyricsView.setLyricFile(file, "UTF-8") + } } } - - override fun onPlayingMetaChanged() { - super.onPlayingMetaChanged() - loadLRCLyrics() - } - - override fun onServiceConnected() { - super.onServiceConnected() - loadLRCLyrics() - } - - override fun onResume() { - super.onResume() - updateHelper.start() - } - - override fun onPause() { - super.onPause() - updateHelper.stop() - } - - override fun onUpdateProgressViews(progress: Int, total: Int) { - lyricsView.setCurrentTimeMillis(progress.toLong()) - } - - private fun loadLRCLyrics() { - val song = MusicPlayerRemote.currentSong - if (LyricUtil.isLrcFileExist(song.title, song.artistName)) { - showLyricsLocal(LyricUtil.getLocalLyricFile(song.title, song.artistName)) - } - } - - private fun showLyricsLocal(file: File?) { - if (file == null) { - lyricsView!!.reset() - } else { - lyricsView!!.setLyricFile(file, "UTF-8") - } - } -} +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/PlaylistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/PlaylistDetailActivity.kt index f1814fcc7..1d17003e7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/PlaylistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/PlaylistDetailActivity.kt @@ -37,7 +37,6 @@ import java.util.* class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, PlaylistSongsContract.PlaylistSongsView { - private var playlist: Playlist? = null private var cab: MaterialCab? = null private lateinit var adapter: SongAdapter @@ -49,7 +48,6 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli setDrawUnderStatusBar() super.onCreate(savedInstanceState) - setStatusbarColor(Color.TRANSPARENT) setNavigationbarColorAuto() setTaskDescriptionColorAuto() @@ -203,6 +201,7 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli private fun checkIsEmpty() { empty.visibility = if (adapter.itemCount == 0) View.VISIBLE else View.GONE + emptyText.visibility = if (adapter.itemCount == 0) View.VISIBLE else View.GONE } public override fun onPause() { @@ -239,7 +238,8 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli override fun loading() {} override fun showEmptyView() { - empty!!.visibility = View.VISIBLE + empty.visibility = View.VISIBLE + emptyText.visibility = View.VISIBLE } override fun completed() {} diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/SearchActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/SearchActivity.kt index 4b3837be8..c652c1ee8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/SearchActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/SearchActivity.kt @@ -5,6 +5,7 @@ import android.app.SearchManager import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent +import android.content.res.ColorStateList import android.os.Bundle import android.speech.RecognizerIntent import android.text.Editable @@ -15,6 +16,8 @@ import android.widget.Toast import androidx.appcompat.widget.SearchView.OnQueryTextListener import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import code.name.monkey.appthemehelper.ThemeStore +import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.retromusic.R import code.name.monkey.retromusic.mvp.contract.SearchContract import code.name.monkey.retromusic.mvp.presenter.SearchPresenter @@ -35,7 +38,6 @@ class SearchActivity : AbsMusicServiceActivity(), OnQueryTextListener, SearchCon super.onCreate(savedInstanceState) setContentView(R.layout.activity_search) - searchPresenter = SearchPresenter(this) setStatusbarColorAuto() @@ -57,10 +59,12 @@ class SearchActivity : AbsMusicServiceActivity(), OnQueryTextListener, SearchCon } back.setOnClickListener { onBackPressed() } voiceSearch.setOnClickListener { startMicSearch() } + + searchContainer.setCardBackgroundColor(ColorStateList.valueOf(ColorUtil.darkenColor(ThemeStore.primaryColor(this)))) + } private fun setupRecyclerView() { - searchAdapter = SearchAdapter(this, emptyList()) searchAdapter!!.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { override fun onChanged() { diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/SettingsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/SettingsActivity.kt index 91ca26e60..fc5ae9501 100755 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/SettingsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/SettingsActivity.kt @@ -1,10 +1,7 @@ package code.name.monkey.retromusic.ui.activities -import android.app.Activity -import android.content.Intent import android.content.SharedPreferences import android.os.Bundle -import android.util.Log import android.view.MenuItem import androidx.annotation.ColorInt import androidx.annotation.StringRes @@ -13,6 +10,7 @@ import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.appthemehelper.util.VersionUtils +import code.name.monkey.retromusic.App.Companion.context import code.name.monkey.retromusic.R import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity @@ -67,11 +65,13 @@ class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback, Sh private fun setupToolbar() { setSupportActionBar(toolbar) title = null - toolbar.setBackgroundColor(ThemeStore.primaryColor(this)) + toolbar.apply { + setBackgroundColor(ThemeStore.primaryColor(context)) + setNavigationOnClickListener { onBackPressed() } + ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.textColorSecondary(context)) + } appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this)) - toolbar.setNavigationOnClickListener { onBackPressed() } settingsTitle.setTextColor(ThemeStore.textColorPrimary(this)) - ToolbarContentTintHelper.colorBackButton(toolbar, ThemeStore.accentColor(this)) } fun setupFragment(fragment: Fragment, @StringRes titleName: Int) { @@ -126,6 +126,6 @@ class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback, Sh companion object { - const val TAG: String = "SettingsActivity" + const val TAG: String = "SettingsActivity" } } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/UserInfoActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/UserInfoActivity.kt index 7a27ef175..db235ef3e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/UserInfoActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/UserInfoActivity.kt @@ -180,7 +180,7 @@ class UserInfoActivity : AbsBaseActivity() { } private fun loadBannerFromStorage(profileImagePath: String) { - disposable!!.add(Compressor(this) + disposable.add(Compressor(this) .setQuality(100) .setCompressFormat(Bitmap.CompressFormat.WEBP) .compressToBitmapAsFlowable(File(profileImagePath, USER_BANNER)) @@ -190,7 +190,7 @@ class UserInfoActivity : AbsBaseActivity() { } private fun loadImageFromStorage(path: String) { - disposable!!.add(Compressor(this) + disposable.add(Compressor(this) .setMaxHeight(300) .setMaxWidth(300) .setQuality(75) diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsCastActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsCastActivity.kt deleted file mode 100644 index 2e2c46881..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsCastActivity.kt +++ /dev/null @@ -1,135 +0,0 @@ -package code.name.monkey.retromusic.ui.activities.base - -import android.os.Bundle -import android.util.Log -import code.name.monkey.retromusic.cast.WebServer -import com.google.android.gms.cast.framework.CastContext -import com.google.android.gms.cast.framework.CastSession -import com.google.android.gms.cast.framework.SessionManagerListener -import com.google.android.gms.common.ConnectionResult -import com.google.android.gms.common.GoogleApiAvailability -import java.io.IOException - -abstract class AbsCastActivity : AbsCheckPiracy() { - - var playServicesAvailable = false - - private var castContext: CastContext? = null - private var sessionManagerListener: SessionManagerListener? = null - var castSession: CastSession? = null - private set - private var castServer: WebServer? = null - - private fun setupCastListener() { - sessionManagerListener = object : SessionManagerListener { - - override fun onSessionEnded(session: CastSession, error: Int) { - onApplicationDisconnected() - Log.i(TAG, "onSessionEnded: ") - } - - override fun onSessionResumed(session: CastSession, wasSuspended: Boolean) { - onApplicationConnected(session) - Log.i(TAG, "onSessionResumed: ") - } - - override fun onSessionResumeFailed(session: CastSession, error: Int) { - onApplicationDisconnected() - Log.i(TAG, "onSessionResumeFailed: ") - } - - override fun onSessionStarted(session: CastSession, sessionId: String) { - onApplicationConnected(session) - Log.i(TAG, "onSessionStarted: ") - } - - override fun onSessionStartFailed(session: CastSession, error: Int) { - onApplicationDisconnected() - Log.i(TAG, "onSessionStartFailed: ") - } - - override fun onSessionStarting(session: CastSession) {} - - override fun onSessionEnding(session: CastSession) {} - - override fun onSessionResuming(session: CastSession, sessionId: String) {} - - override fun onSessionSuspended(session: CastSession, reason: Int) {} - - private fun onApplicationConnected(castSession: CastSession) { - this@AbsCastActivity.castSession = castSession - castServer = WebServer(applicationContext) - try { - castServer!!.start() - } catch (e: IOException) { - e.printStackTrace() - } - invalidateOptionsMenu() - showCastMiniController() - } - - private fun onApplicationDisconnected() { - if (castServer != null) { - castServer!!.stop() - } - invalidateOptionsMenu() - hideCastMiniController() - } - } - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - try { - playServicesAvailable = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS - } catch (ignored: Exception) { - - } - - if (playServicesAvailable) - initCast() - - - } - - override fun onResume() { - if (playServicesAvailable) { - castContext!!.sessionManager.addSessionManagerListener(sessionManagerListener!!, CastSession::class.java) - } - super.onResume() - } - - override fun onPause() { - super.onPause() - if (playServicesAvailable) { - castContext!!.sessionManager.removeSessionManagerListener(sessionManagerListener, CastSession::class.java) - } - } - - private fun initCast() { - setupCastListener() - castContext = CastContext.getSharedInstance(this) - castSession = castContext!!.sessionManager.currentCastSession - } - - /* @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.menu_cast, menu); - if (playServicesAvailable) { - CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), menu, R.id.media_route_menu_item); - } - return true; - }*/ - - open fun showCastMiniController() { - //implement by overriding in activities - } - - open fun hideCastMiniController() { - //implement by overriding in activities - } - - companion object { - private val TAG = "AbsCastActivity" - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsCheckPiracy.java b/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsCheckPiracy.java deleted file mode 100644 index 8d154c837..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsCheckPiracy.java +++ /dev/null @@ -1,5 +0,0 @@ -package code.name.monkey.retromusic.ui.activities.base; - -abstract public class AbsCheckPiracy extends AbsBaseActivity { - -} diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsMusicServiceActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsMusicServiceActivity.kt index e22fb8013..a51024b13 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsMusicServiceActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsMusicServiceActivity.kt @@ -17,7 +17,7 @@ import java.lang.ref.WeakReference import java.util.* -abstract class AbsMusicServiceActivity : AbsCastActivity(), MusicServiceEventListener { +abstract class AbsMusicServiceActivity : AbsBaseActivity(), MusicServiceEventListener { private val mMusicServiceEventListeners = ArrayList() diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsSlidingMusicPanelActivity.kt index 292f2db5a..411cfb95a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsSlidingMusicPanelActivity.kt @@ -31,7 +31,6 @@ import code.name.monkey.retromusic.ui.fragments.player.plain.PlainPlayerFragment import code.name.monkey.retromusic.ui.fragments.player.simple.SimplePlayerFragment import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.views.BottomNavigationBarTinted -import com.google.android.material.bottomnavigation.BottomNavigationView import com.sothree.slidinguppanel.SlidingUpPanelLayout import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelState import kotlinx.android.synthetic.main.sliding_music_panel_layout.* @@ -125,13 +124,6 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe return false } - override fun onPlayingMetaChanged() { - super.onPlayingMetaChanged() - castSession ?: return - //MusicPlayerRemote.setZeroVolume(); - //CastHelper.startCasting(castSession, MusicPlayerRemote.getCurrentSong()); - } - fun toggleBottomNavigationView(toggle: Boolean) { bottomNavigationView.visibility = if (toggle) View.GONE else View.VISIBLE } @@ -189,7 +181,7 @@ abstract class AbsSlidingMusicPanelActivity protected constructor() : AbsMusicSe playerFragment!!.onHide() } - open fun onPanelExpanded() { + open fun onPanelExpanded() { val playerFragmentColor = playerFragment!!.paletteColor super.setTaskDescriptionColor(playerFragmentColor) diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/bugreport/BugReportActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/bugreport/BugReportActivity.kt index 35ae2d33f..e1e2f98f6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/bugreport/BugReportActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/bugreport/BugReportActivity.kt @@ -110,7 +110,7 @@ open class BugReportActivity : AbsThemeActivity() { }) } - inputPassword!!.setOnEditorActionListener { _, actionId, event -> + inputPassword!!.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEND) { reportIssue() return@setOnEditorActionListener true diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/tageditor/SongTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/tageditor/SongTagEditorActivity.kt index 9bc5525e5..f16aa2730 100755 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/tageditor/SongTagEditorActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/tageditor/SongTagEditorActivity.kt @@ -4,7 +4,9 @@ import android.net.Uri import android.os.Bundle import android.text.Editable import android.text.TextWatcher +import androidx.core.content.ContextCompat import code.name.monkey.appthemehelper.ThemeStore +import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.loaders.SongLoader import kotlinx.android.synthetic.main.activity_song_tag_editor.* @@ -19,11 +21,14 @@ class SongTagEditorActivity : AbsTagEditorActivity(), TextWatcher { private fun setupToolbar() { appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this)) - toolbar.setBackgroundColor(ThemeStore.primaryColor(this)) - toolbar.setNavigationOnClickListener { onBackPressed() } + toolbar.apply { + setBackgroundColor(ThemeStore.primaryColor(context)) + navigationIcon = TintHelper.createTintedDrawable(ContextCompat.getDrawable(context, R.drawable.ic_keyboard_backspace_black_24dp), ThemeStore.textColorPrimary(context)) + setNavigationOnClickListener { onBackPressed() } + setSupportActionBar(toolbar) + } title = null - bannerTitle!!.setTextColor(ThemeStore.textColorPrimary(this)) - setSupportActionBar(toolbar) + bannerTitle.setTextColor(ThemeStore.textColorPrimary(this)) } override fun onCreate(savedInstanceState: Bundle?) { @@ -113,5 +118,4 @@ class SongTagEditorActivity : AbsTagEditorActivity(), TextWatcher { companion object { val TAG: String = SongTagEditorActivity::class.java.simpleName } - } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/AlbumAdapter.kt index 01c141d7a..2c108ee24 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/AlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/AlbumAdapter.kt @@ -26,7 +26,7 @@ import code.name.monkey.retromusic.ui.adapter.base.MediaEntryViewHolder import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil -import com.bumptech.glide.Glide +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView import java.util.* @@ -131,6 +131,7 @@ open class AlbumAdapter(protected val activity: AppCompatActivity, GlideApp.with(activity) .asBitmapPalette() .load(RetroGlideExtension.getSongModel(album.safeGetFirstSong())) + .transition(RetroGlideExtension.getDefaultTransition()) .songOptions(album.safeGetFirstSong()) .dontAnimate() diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/HorizontalAlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/HorizontalAlbumAdapter.kt index 16f21c7b5..f72eb3feb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/HorizontalAlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/HorizontalAlbumAdapter.kt @@ -44,12 +44,15 @@ class HorizontalAlbumAdapter(activity: AppCompatActivity, dataSet: ArrayList NavigationUtil.goToPlayingQueue(activity!!) R.id.actionNext -> MusicPlayerRemote.playNextSong() @@ -49,13 +50,13 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda setUpMiniPlayer() if (RetroUtil.isTablet()) { - actionNext!!.visibility = View.VISIBLE - actionPrevious!!.visibility = View.VISIBLE - actionPlayingQueue!!.visibility = View.VISIBLE + actionNext.visibility = View.VISIBLE + actionPrevious.visibility = View.VISIBLE + actionPlayingQueue.visibility = View.VISIBLE } else { - actionNext!!.visibility = if (PreferenceUtil.getInstance().isExtraMiniExtraControls) View.VISIBLE else View.GONE - actionPlayingQueue!!.visibility = if (PreferenceUtil.getInstance().isExtraMiniExtraControls) View.GONE else View.VISIBLE - actionPrevious!!.visibility = if (PreferenceUtil.getInstance().isExtraMiniExtraControls) View.VISIBLE else View.GONE + actionNext.visibility = if (PreferenceUtil.getInstance().isExtraMiniExtraControls) View.VISIBLE else View.GONE + actionPlayingQueue.visibility = if (PreferenceUtil.getInstance().isExtraMiniExtraControls) View.GONE else View.VISIBLE + actionPrevious.visibility = if (PreferenceUtil.getInstance().isExtraMiniExtraControls) View.VISIBLE else View.GONE } actionPlayingQueue.setOnClickListener(this) @@ -65,7 +66,7 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda private fun setUpMiniPlayer() { setUpPlayPauseButton() - progressBar!!.progressTintList = ColorStateList.valueOf(ThemeStore.accentColor(activity!!)) + progressBar.progressTintList = ColorStateList.valueOf(ThemeStore.accentColor(activity!!)) } private fun setUpPlayPauseButton() { @@ -128,14 +129,13 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda } fun setColor(playerFragmentColor: Int) { - view!!.setBackgroundColor(playerFragmentColor) } class FlingPlayBackController(context: Context) : View.OnTouchListener { - internal var flingPlayBackController: GestureDetector + var flingPlayBackController: GestureDetector init { flingPlayBackController = GestureDetector(context, diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/VolumeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/VolumeFragment.kt index 87da5c729..e4052ca8f 100755 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/VolumeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/VolumeFragment.kt @@ -1,6 +1,7 @@ package code.name.monkey.retromusic.ui.fragments import android.content.Context +import android.content.res.ColorStateList import android.graphics.Color import android.graphics.PorterDuff import android.media.AudioManager @@ -10,7 +11,7 @@ import android.view.View import android.view.ViewGroup import android.widget.SeekBar import androidx.fragment.app.Fragment -import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -33,7 +34,7 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - setTintable(ATHUtil.resolveColor(context, R.attr.iconColor)) + setTintable(ThemeStore.textColorSecondary(context!!)) volumeDown.setOnClickListener(this) volumeUp.setOnClickListener(this) } @@ -98,7 +99,13 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum } private fun setProgressBarColor(newColor: Int) { - TintHelper.setTintAuto(volumeSeekBar, newColor, false) + + val text = ColorStateList(arrayOf(intArrayOf(-android.R.attr.state_checked), intArrayOf(android.R.attr.state_checked)), intArrayOf(ThemeStore.textColorSecondary(context!!), ThemeStore.textColorPrimary(context!!))) + + volumeSeekBar.progressTintList = text + volumeSeekBar.progressBackgroundTintList = text + + //TintHelper.setTint(volumeSeekBar, newColor, false) volumeDown.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) volumeUp.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt index 4e833d14d..ac3ef9ea2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt @@ -58,7 +58,7 @@ abstract class AbsLibraryPagerRecyclerViewFragment, get() = R.string.empty private fun checkIsEmpty() { - empty.setText(emptyMessage) + emptyText.setText(emptyMessage) empty.visibility = if (adapter!!.itemCount == 0) View.VISIBLE else View.GONE } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/LibraryFragment.java b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/LibraryFragment.java index eb6c8c491..11a65adce 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/LibraryFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/LibraryFragment.java @@ -71,6 +71,12 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde private ImageView userImage; private CompositeDisposable disposable = new CompositeDisposable(); + @Override + public void onDestroyView() { + super.onDestroyView(); + disposable.dispose(); + } + public static Fragment newInstance(int tab) { Bundle args = new Bundle(); args.putInt(CURRENT_TAB_ID, tab); diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/home/BannerHomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/home/BannerHomeFragment.kt index 428e4f984..9e067cc25 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/home/BannerHomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/home/BannerHomeFragment.kt @@ -17,6 +17,7 @@ import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.Constants.USER_BANNER import code.name.monkey.retromusic.Constants.USER_PROFILE import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.loaders.SongLoader @@ -35,7 +36,6 @@ import code.name.monkey.retromusic.util.Compressor import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.RetroUtil -import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable @@ -91,11 +91,11 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba private fun loadTimeImage(day: String) { if (bannerImage != null) { if (PreferenceUtil.getInstance().bannerImage.isEmpty()) { - /*Glide.with(activity).load(day) - .asBitmap() + GlideApp.with(activity!!) + .load(day) .placeholder(R.drawable.material_design_default) - .diskCacheStrategy(DiskCacheStrategy.SOURCE) - .into(bannerImage!!)*/ + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(bannerImage!!) } else { disposable.add(Compressor(context!!) .setQuality(100) @@ -176,7 +176,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba } private fun setupToolbar() { - toolbar.navigationIcon = TintHelper.createTintedDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_search_white_24dp), ThemeStore.textColorPrimary(context!!)) + toolbar.navigationIcon = TintHelper.createTintedDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_search_white_24dp), ThemeStore.textColorSecondary(context!!)) mainActivity.title = null mainActivity.setSupportActionBar(toolbar) toolbar.setBackgroundColor(Color.TRANSPARENT) @@ -188,7 +188,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba override fun onDestroyView() { super.onDestroyView() - disposable.clear() + disposable.dispose() homePresenter.unsubscribe() } @@ -236,8 +236,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba override fun topAlbums(albums: ArrayList) { topAlbumsContainer.visibility = View.VISIBLE - val artistAdapter = AlbumFullWithAdapter(mainActivity, - displayMetrics) + val artistAdapter = AlbumFullWithAdapter(mainActivity, displayMetrics) artistAdapter.swapData(albums) topAlbum.adapter = artistAdapter } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/card/CardPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/card/CardPlaybackControlsFragment.kt index 5646881d8..f12d061d5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/card/CardPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/card/CardPlaybackControlsFragment.kt @@ -8,6 +8,7 @@ import android.view.View import android.view.ViewGroup import android.view.animation.LinearInterpolator import android.widget.SeekBar +import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerFragment.kt index 378cdaa14..d9c605abd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerFragment.kt @@ -1,16 +1,21 @@ package code.name.monkey.retromusic.ui.fragments.player.normal +import android.animation.Animator +import android.animation.AnimatorSet import android.animation.ArgbEvaluator import android.animation.ValueAnimator import android.graphics.drawable.GradientDrawable +import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View +import android.view.ViewAnimationUtils import android.view.ViewGroup import androidx.appcompat.widget.Toolbar +import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper -import code.name.monkey.retromusic.R import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerFragment @@ -19,6 +24,8 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.views.DrawableGradient import kotlinx.android.synthetic.main.fragment_player.* +import kotlinx.android.synthetic.main.fragment_player_playback_controls.* +import kotlinx.android.synthetic.main.media_button.* class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks { @@ -59,7 +66,7 @@ class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks { } override fun toolbarIconColor(): Int { - return ATHUtil.resolveColor(context, R.attr.iconColor) + return ATHUtil.resolveColor(context, code.name.monkey.retromusic.R.attr.iconColor) } override fun onColorChanged(color: Int) { @@ -67,7 +74,7 @@ class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks { lastColor = color callbacks!!.onPaletteColorChanged() - ToolbarContentTintHelper.colorizeToolbar(playerToolbar, ATHUtil.resolveColor(context, R.attr.iconColor), activity) + ToolbarContentTintHelper.colorizeToolbar(playerToolbar, ATHUtil.resolveColor(context, code.name.monkey.retromusic.R.attr.iconColor), activity) if (PreferenceUtil.getInstance().adaptiveColor) { colorize(color) @@ -89,28 +96,28 @@ class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_player, container, false) + return inflater.inflate(code.name.monkey.retromusic.R.layout.fragment_player, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpSubFragments() setUpPlayerToolbar() - snowfall.visibility= if (PreferenceUtil.getInstance().isSnowFall) View.VISIBLE else View.GONE + snowfall.visibility = if (PreferenceUtil.getInstance().isSnowFall) View.VISIBLE else View.GONE } private fun setUpSubFragments() { - playbackControlsFragment = childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as PlayerPlaybackControlsFragment - val playerAlbumCoverFragment = childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + playbackControlsFragment = childFragmentManager.findFragmentById(code.name.monkey.retromusic.R.id.playbackControlsFragment) as PlayerPlaybackControlsFragment + val playerAlbumCoverFragment = childFragmentManager.findFragmentById(code.name.monkey.retromusic.R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment playerAlbumCoverFragment.setCallbacks(this) } private fun setUpPlayerToolbar() { - playerToolbar.inflateMenu(R.menu.menu_player) + playerToolbar.inflateMenu(code.name.monkey.retromusic.R.menu.menu_player) playerToolbar.setNavigationOnClickListener { activity!!.onBackPressed() } playerToolbar.setOnMenuItemClickListener(this) - ToolbarContentTintHelper.colorizeToolbar(playerToolbar, ATHUtil.resolveColor(context, R.attr.iconColor), activity) + ToolbarContentTintHelper.colorizeToolbar(playerToolbar, ATHUtil.resolveColor(context, code.name.monkey.retromusic.R.attr.iconColor), activity) } override fun onServiceConnected() { @@ -133,3 +140,4 @@ class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks { } } } + diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ArtistSignatureUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/ArtistSignatureUtil.java index c4d4b9f50..e8dae9187 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/ArtistSignatureUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/ArtistSignatureUtil.java @@ -4,12 +4,12 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; +import androidx.annotation.NonNull; + import com.bumptech.glide.signature.ObjectKey; -import androidx.annotation.NonNull; import code.name.monkey.retromusic.App; - public class ArtistSignatureUtil { private static final String ARTIST_SIGNATURE_PREFS = "artist_signatures"; 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 88dfc3f8a..532902a9c 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 @@ -43,7 +43,7 @@ class CustomArtistImageUtil private constructor(context: Context) { object : AsyncTask() { @SuppressLint("ApplySharedPref") override fun doInBackground(vararg params: Void): Void? { - val dir = File(App.context.getFilesDir(), FOLDER_NAME) + val dir = File(App.context.filesDir, FOLDER_NAME) if (!dir.exists()) { if (!dir.mkdirs()) { // create the folder return null @@ -63,7 +63,7 @@ class CustomArtistImageUtil private constructor(context: Context) { if (succesful) { mPreferences.edit().putBoolean(getFileName(artist), true).commit() ArtistSignatureUtil.getInstance().updateArtistSignature(artist.name) - App.context.getContentResolver().notifyChange(Uri.parse("content://media"), null) // trigger media store changed to force artist image reload + App.context.contentResolver.notifyChange(Uri.parse("content://media"), null) // trigger media store changed to force artist image reload } return null } @@ -118,7 +118,7 @@ class CustomArtistImageUtil private constructor(context: Context) { @JvmStatic fun getFile(artist: Artist): File { - val dir = File(App.context.getFilesDir(), FOLDER_NAME) + val dir = File(App.context.filesDir, FOLDER_NAME) return File(dir, getFileName(artist)) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java index 18fc634eb..5c1f5177c 100755 --- a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.java @@ -2,7 +2,6 @@ package code.name.monkey.retromusic.util; import android.app.Activity; import android.content.ActivityNotFoundException; -import android.content.Context; import android.content.Intent; import android.media.audiofx.AudioEffect; import android.widget.Toast; @@ -12,8 +11,8 @@ import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityOptionsCompat; import androidx.core.util.Pair; + import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.cast.ExpandedCastControlsActivity; import code.name.monkey.retromusic.helper.MusicPlayerRemote; import code.name.monkey.retromusic.model.Genre; import code.name.monkey.retromusic.model.Playlist; @@ -137,20 +136,7 @@ public class NavigationUtil { openUrl(activity, RATE_ON_GOOGLE_PLAY); } - public static void gotoExpandedController(Activity activity) { - ActivityCompat.startActivity(activity, new Intent(activity, ExpandedCastControlsActivity.class), null); - } - public static void gotoWhatNews(Activity activity) { ActivityCompat.startActivity(activity, new Intent(activity, WhatsNewActivity.class), null); } - - public static void gotoNowPlayingActivity(Context context, @Nullable Pair... sharedElements) { - //ActivityCompat.startActivity(context, new Intent(context, NowPayingActivity.class), ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context, sharedElements).toBundle()); - - } - - public static void gotoNowPlaying(Activity activity) { - //ActivityCompat.startActivity(activity, new Intent(activity, NowPayingActivity.class),null); - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java index dd4110df4..f8693d810 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java @@ -7,30 +7,24 @@ import android.content.SharedPreferences.Editor; import android.content.res.TypedArray; import android.preference.PreferenceManager; -import com.google.android.material.bottomnavigation.LabelVisibilityMode; -import com.google.gson.Gson; -import com.google.gson.JsonSyntaxException; -import com.google.gson.reflect.TypeToken; - -import java.io.File; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Objects; - import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.StyleRes; import androidx.viewpager.widget.ViewPager; + +import com.google.android.material.bottomnavigation.LabelVisibilityMode; + +import java.io.File; +import java.util.Objects; + import code.name.monkey.retromusic.App; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.helper.SortOrder; -import code.name.monkey.retromusic.model.CategoryInfo; import code.name.monkey.retromusic.transform.CascadingPageTransformer; import code.name.monkey.retromusic.transform.DepthTransformation; import code.name.monkey.retromusic.transform.HingeTransformation; import code.name.monkey.retromusic.transform.HorizontalFlipTransformation; import code.name.monkey.retromusic.transform.NormalPageTransformer; -import code.name.monkey.retromusic.transform.StackPagerTransformer; import code.name.monkey.retromusic.transform.StackTransformer; import code.name.monkey.retromusic.transform.VerticalFlipTransformation; import code.name.monkey.retromusic.ui.activities.MainActivity; @@ -71,7 +65,6 @@ public final class PreferenceUtil { public static final String ALBUM_COVER_TRANSFORM = "album_cover_transform"; public static final String TAB_TEXT_MODE = "tab_text_mode"; private static final String GENRE_SORT_ORDER = "genre_sort_order"; - private static final String LIBRARY_CATEGORIES = "library_categories"; private static final String LAST_PAGE = "last_start_page"; private static final String LAST_MUSIC_CHOOSER = "last_music_chooser"; private static final String DEFAULT_START_PAGE = "default_start_page"; @@ -106,7 +99,7 @@ public final class PreferenceUtil { private static final String LOCK_SCREEN = "lock_screen"; private static final String ALBUM_DETAIL_SONG_SORT_ORDER = "album_detail_song_sort_order"; private static final String ARTIST_DETAIL_SONG_SORT_ORDER = "artist_detail_song_sort_order"; - private static final String LYRICS_OPTIONS = "lyrics_options"; + private static final String LYRICS_OPTIONS = "lyrics_tab_position"; private static final String CHOOSE_EQUALIZER = "choose_equalizer"; private static final String TOGGLE_SHUFFLE = "toggle_shuffle"; private static final String SONG_GRID_STYLE = "song_grid_style"; @@ -133,17 +126,17 @@ public final class PreferenceUtil { @StyleRes public static int getThemeResFromPrefValue(String themePrefValue) { switch (themePrefValue) { - case "dark": - return R.style.Theme_RetroMusic; + case "light": + return R.style.Theme_RetroMusic_Light; case "color": return R.style.Theme_RetroMusic_Color; case "acolor": return R.style.Theme_RetroMusic_Black; case "black": return R.style.Theme_RetroMusic_Black; - case "light": + case "dark": default: - return R.style.Theme_RetroMusic_Light; + return R.style.Theme_RetroMusic; } } @@ -170,8 +163,7 @@ public final class PreferenceUtil { } public final String getArtistAlbumSortOrder() { - return mPreferences - .getString(ARTIST_ALBUM_SORT_ORDER, SortOrder.ArtistAlbumSortOrder.ALBUM_YEAR); + return mPreferences.getString(ARTIST_ALBUM_SORT_ORDER, SortOrder.ArtistAlbumSortOrder.ALBUM_YEAR); } public final String getAlbumSortOrder() { @@ -221,51 +213,10 @@ public final class PreferenceUtil { return mPreferences.getBoolean(TOGGLE_ADD_CONTROLS, false); } - public boolean circularAlbumArt() { - return mPreferences.getBoolean(CIRCULAR_ALBUM_ART, false); - } - public boolean carouselEffect() { return mPreferences.getBoolean(CAROUSEL_EFFECT, false); } - public ArrayList getLibraryCategoryInfos() { - String data = mPreferences.getString(LIBRARY_CATEGORIES, null); - if (data != null) { - Gson gson = new Gson(); - Type collectionType = new TypeToken>() { - }.getType(); - - try { - return gson.fromJson(data, collectionType); - } catch (JsonSyntaxException e) { - e.printStackTrace(); - } - } - - return getDefaultLibraryCategoryInfos(); - } - - public void setLibraryCategoryInfos(ArrayList categories) { - Gson gson = new Gson(); - Type collectionType = new TypeToken>() { - }.getType(); - - final SharedPreferences.Editor editor = mPreferences.edit(); - editor.putString(LIBRARY_CATEGORIES, gson.toJson(categories, collectionType)); - editor.apply(); - } - - public ArrayList getDefaultLibraryCategoryInfos() { - ArrayList defaultCategoryInfos = new ArrayList<>(5); - defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.SONGS, true)); - defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.ALBUMS, true)); - defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.ARTISTS, true)); - defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.GENRES, true)); - defaultCategoryInfos.add(new CategoryInfo(CategoryInfo.Category.PLAYLISTS, true)); - return defaultCategoryInfos; - } - public boolean isRoundCorners() { return mPreferences.getBoolean(ROUND_CORNERS, false); } @@ -552,7 +503,7 @@ public final class PreferenceUtil { } public int getGeneralTheme() { - return getThemeResFromPrefValue(mPreferences.getString(GENERAL_THEME, "light")); + return getThemeResFromPrefValue(mPreferences.getString(GENERAL_THEME, "dark")); } public void setGeneralTheme(String theme) { @@ -611,10 +562,6 @@ public final class PreferenceUtil { mPreferences.edit().putInt(TOGGLE_FULL_SCREEN, newValue).apply(); } - public String lyricsOptions() { - return mPreferences.getString(LYRICS_OPTIONS, "offline"); - } - public void saveProfileImage(String profileImagePath) { mPreferences.edit().putString(PROFILE_IMAGE_PATH, profileImagePath) .apply(); diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.java index fcc3c8c91..2d73a980e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.java @@ -1,24 +1,53 @@ package code.name.monkey.retromusic.util; +import android.animation.Animator; +import android.animation.ArgbEvaluator; +import android.animation.ObjectAnimator; import android.content.Context; import android.content.res.Resources; import android.graphics.Color; -import androidx.core.view.ViewCompat; +import android.os.Build; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; +import android.view.animation.PathInterpolator; +import android.widget.TextView; + +import androidx.annotation.ColorInt; +import androidx.core.view.ViewCompat; import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView; -import code.name.monkey.appthemehelper.util.ATHUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import code.name.monkey.appthemehelper.util.ColorUtil; import code.name.monkey.appthemehelper.util.MaterialValueHelper; -import code.name.monkey.retromusic.R; public class ViewUtil { public final static int RETRO_MUSIC_ANIM_TIME = 1000; + public static Animator createTextColorTransition(final TextView v, @ColorInt final int startColor, @ColorInt final int endColor) { + return createColorAnimator(v, "textColor", startColor, endColor); + } + + private static Animator createColorAnimator(Object target, String propertyName, @ColorInt int startColor, @ColorInt int endColor) { + ObjectAnimator animator; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + animator = ObjectAnimator.ofArgb(target, propertyName, startColor, endColor); + } else { + animator = ObjectAnimator.ofInt(target, propertyName, startColor, endColor); + animator.setEvaluator(new ArgbEvaluator()); + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + animator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f)); + } + animator.setDuration(RETRO_MUSIC_ANIM_TIME); + return animator; + } + public static void setStatusBarHeight(final Context context, View statusBar) { ViewGroup.LayoutParams lp = statusBar.getLayoutParams(); lp.height = getStatusBarHeight(context); @@ -59,4 +88,9 @@ public class ViewUtil { DisplayMetrics metrics = resources.getDisplayMetrics(); return dp * metrics.density; } + + @NotNull + public static Animator createBackgroundColorTransition(@Nullable View colorGradientBackground, int lastColor, int newColor) { + return null; + } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/views/LyricView.java b/app/src/main/java/code/name/monkey/retromusic/views/LyricView.java index 226fa00e4..ba73c15c7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/LyricView.java +++ b/app/src/main/java/code/name/monkey/retromusic/views/LyricView.java @@ -13,7 +13,6 @@ import android.graphics.Path; import android.graphics.Rect; import android.graphics.Typeface; import android.os.Looper; -import androidx.annotation.IntDef; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; @@ -25,7 +24,12 @@ import android.view.View; import android.view.ViewConfiguration; import android.view.animation.DecelerateInterpolator; import android.view.animation.LinearInterpolator; -import code.name.monkey.retromusic.R; + +import androidx.annotation.IntDef; +import androidx.core.content.res.ResourcesCompat; + +import org.mozilla.universalchardet.UniversalDetector; + import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -38,7 +42,8 @@ import java.lang.annotation.RetentionPolicy; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; -import org.mozilla.universalchardet.UniversalDetector; + +import code.name.monkey.retromusic.R; /** * Created by zhengken.me on 2016/11/27. @@ -588,7 +593,7 @@ public class LyricView extends View { mTextPaint = new TextPaint(); mTextPaint.setDither(true); mTextPaint.setAntiAlias(true); - Typeface typeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/circular_std_book.otf"); + Typeface typeface = ResourcesCompat.getFont(getContext(), R.font.font); mTextPaint.setTypeface(typeface); switch (mTextAlign) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/MaterialButtonTextColor.java b/app/src/main/java/code/name/monkey/retromusic/views/MaterialButtonTextColor.java deleted file mode 100644 index b5ff0287c..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/views/MaterialButtonTextColor.java +++ /dev/null @@ -1,25 +0,0 @@ -package code.name.monkey.retromusic.views; - -import android.content.Context; -import android.util.AttributeSet; - -import com.google.android.material.button.MaterialButton; - -import code.name.monkey.appthemehelper.ThemeStore; -import code.name.monkey.appthemehelper.util.ColorUtil; -import code.name.monkey.appthemehelper.util.MaterialValueHelper; - -public class MaterialButtonTextColor extends MaterialButton { - public MaterialButtonTextColor(Context context) { - this(context, null); - } - - public MaterialButtonTextColor(Context context, AttributeSet attrs) { - this(context, attrs, -1); - } - - public MaterialButtonTextColor(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - setTextColor(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(ThemeStore.primaryColor(getContext())))); - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/views/MaterialButtonTextColor.kt b/app/src/main/java/code/name/monkey/retromusic/views/MaterialButtonTextColor.kt new file mode 100644 index 000000000..eab3fe5f2 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/views/MaterialButtonTextColor.kt @@ -0,0 +1,23 @@ +package code.name.monkey.retromusic.views + +import android.content.Context +import android.content.res.ColorStateList +import android.util.AttributeSet +import code.name.monkey.appthemehelper.ThemeStore +import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.appthemehelper.util.ColorUtil +import code.name.monkey.appthemehelper.util.MaterialValueHelper +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.util.RetroUtil +import com.google.android.material.button.MaterialButton + +class MaterialButtonTextColor @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = -1) : MaterialButton(context, attrs, defStyleAttr) { + + init { + setTextColor(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(ThemeStore.primaryColor(getContext())))) + iconTint = ColorStateList.valueOf(ATHUtil.resolveColor(context, R.attr.iconColor)) + iconPadding = RetroUtil.convertDpToPixel(16f, getContext()).toInt() + rippleColor = ColorStateList.valueOf(ColorUtil.withAlpha(ThemeStore.accentColor(context), 0.4f)) + minHeight = RetroUtil.convertDpToPixel(52f, context).toInt() + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/views/NetworkImageView.java b/app/src/main/java/code/name/monkey/retromusic/views/NetworkImageView.java index 024adbbb4..20d34dcad 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/NetworkImageView.java +++ b/app/src/main/java/code/name/monkey/retromusic/views/NetworkImageView.java @@ -4,9 +4,8 @@ import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; -import com.bumptech.glide.Glide; - import code.name.monkey.retromusic.R; +import code.name.monkey.retromusic.glide.GlideApp; /** * @author Hemanth S (h4h13). @@ -33,10 +32,11 @@ public class NetworkImageView extends CircularImageView { } public void setImageUrl(Context context, String imageUrl) { - /*Glide.with(context).load(imageUrl).asBitmap() + GlideApp.with(context) + .load(imageUrl) .error(R.drawable.ic_person_flat) .placeholder(R.drawable.ic_person_flat) - .into(this);*/ + .into(this); } private void init(Context context, AttributeSet attributeSet) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/StatusBarMarginFrameLayout.java b/app/src/main/java/code/name/monkey/retromusic/views/StatusBarMarginFrameLayout.java new file mode 100644 index 000000000..05e83dd84 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/views/StatusBarMarginFrameLayout.java @@ -0,0 +1,33 @@ +package code.name.monkey.retromusic.views; + +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.view.WindowInsets; +import android.widget.FrameLayout; + +public class StatusBarMarginFrameLayout extends FrameLayout { + + + public StatusBarMarginFrameLayout(Context context) { + super(context); + } + + public StatusBarMarginFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public StatusBarMarginFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public WindowInsets onApplyWindowInsets(WindowInsets insets) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams(); + lp.topMargin = insets.getSystemWindowInsetTop(); + setLayoutParams(lp); + } + return super.onApplyWindowInsets(insets); + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ThemeableMediaRouteActionProvider.java b/app/src/main/java/code/name/monkey/retromusic/views/ThemeableMediaRouteActionProvider.java deleted file mode 100644 index 93a77bb27..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/views/ThemeableMediaRouteActionProvider.java +++ /dev/null @@ -1,49 +0,0 @@ -package code.name.monkey.retromusic.views; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import androidx.annotation.Nullable; -import androidx.core.graphics.drawable.DrawableCompat; -import androidx.mediarouter.app.MediaRouteActionProvider; -import androidx.mediarouter.app.MediaRouteButton; -import androidx.appcompat.view.ContextThemeWrapper; - -import code.name.monkey.appthemehelper.ThemeStore; - -public class ThemeableMediaRouteActionProvider extends MediaRouteActionProvider { - public ThemeableMediaRouteActionProvider(Context context) { - super(context); - } - - @Override - public MediaRouteButton onCreateMediaRouteButton() { - MediaRouteButton button = super.onCreateMediaRouteButton(); - colorWorkaroundForCastIcon(button); - return button; - } - - @Nullable - @Override - public MediaRouteButton getMediaRouteButton() { - MediaRouteButton button = super.getMediaRouteButton(); - colorWorkaroundForCastIcon(button); - return button; - } - - private void colorWorkaroundForCastIcon(MediaRouteButton button) { - if (button == null) return; - Context castContext = new ContextThemeWrapper(getContext(), androidx.mediarouter.R.style.Theme_MediaRouter); - - TypedArray a = castContext.obtainStyledAttributes(null, - androidx.mediarouter.R.styleable.MediaRouteButton, androidx.mediarouter.R.attr.mediaRouteButtonStyle, 0); - Drawable drawable = a.getDrawable( - androidx.mediarouter.R.styleable.MediaRouteButton_externalRouteEnabledDrawable); - a.recycle(); - if (drawable != null) { - DrawableCompat.setTint(drawable, ThemeStore.textColorPrimary(getContext())); - drawable.setState(button.getDrawableState()); - button.setRemoteIndicatorDrawable(drawable); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/views/TintIconColorToolbar.kt b/app/src/main/java/code/name/monkey/retromusic/views/TintIconColorToolbar.kt index ee5ae245e..cee2e6849 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/TintIconColorToolbar.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/TintIconColorToolbar.kt @@ -17,6 +17,6 @@ class TintIconColorToolbar : Toolbar { override fun setNavigationIcon(icon: Drawable?) { super.setNavigationIcon(icon) - icon?.setColorFilter(ThemeStore.accentColor(context), PorterDuff.Mode.SRC_IN) + icon?.setColorFilter(ThemeStore.textColorSecondary(context), PorterDuff.Mode.SRC_IN) } } diff --git a/app/src/main/res/drawable/ic_access_time_white_24dp.xml b/app/src/main/res/drawable/ic_access_time_white_24dp.xml index cdb5063a7..b1fc7d60d 100644 --- a/app/src/main/res/drawable/ic_access_time_white_24dp.xml +++ b/app/src/main/res/drawable/ic_access_time_white_24dp.xml @@ -4,12 +4,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - - + android:pathData="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm0.5-13H11v6l5.25 3.15 0.75 -1.23-4.5-2.67z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_photo_white_24dp.xml b/app/src/main/res/drawable/ic_add_photo_white_24dp.xml new file mode 100644 index 000000000..49d868e98 --- /dev/null +++ b/app/src/main/res/drawable/ic_add_photo_white_24dp.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_album_selected_white_24dp.xml b/app/src/main/res/drawable/ic_album_selected_white_24dp.xml new file mode 100644 index 000000000..9e831534c --- /dev/null +++ b/app/src/main/res/drawable/ic_album_selected_white_24dp.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_album_white_24dp.xml b/app/src/main/res/drawable/ic_album_white_24dp.xml index 9e831534c..13d269f24 100644 --- a/app/src/main/res/drawable/ic_album_white_24dp.xml +++ b/app/src/main/res/drawable/ic_album_white_24dp.xml @@ -5,7 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> + + android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-12.5c-2.49 0-4.5 2.01-4.5 4.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5-2.01-4.5-4.5-4.5zm0 5.5c-0.55 0-1-0.45-1-1s0.45-1 1-1 1 0.45 1 1-0.45 1-1 1z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_albums_white_24dp.xml b/app/src/main/res/drawable/ic_albums_white_24dp.xml deleted file mode 100644 index f60d32d73..000000000 --- a/app/src/main/res/drawable/ic_albums_white_24dp.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_app_shortcut_search.xml b/app/src/main/res/drawable/ic_app_shortcut_search.xml new file mode 100644 index 000000000..96c12681a --- /dev/null +++ b/app/src/main/res/drawable/ic_app_shortcut_search.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_artist_selected_white_24dp.xml b/app/src/main/res/drawable/ic_artist_selected_white_24dp.xml new file mode 100644 index 000000000..ca9417a72 --- /dev/null +++ b/app/src/main/res/drawable/ic_artist_selected_white_24dp.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_artist_white_24dp.xml b/app/src/main/res/drawable/ic_artist_white_24dp.xml index ca9417a72..ba9618349 100644 --- a/app/src/main/res/drawable/ic_artist_white_24dp.xml +++ b/app/src/main/res/drawable/ic_artist_white_24dp.xml @@ -4,11 +4,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + android:pathData="M 10 4 C 7.789999 4 6 5.79 6 8 C 6 10.21 7.789999 12 10 12 C 12.21 12 14 10.21 14 8 C 14 5.79 12.21 4 10 4 z M 10 6 C 11.1 6 12 6.9 12 8 C 12 9.1 11.1 10 10 10 C 8.899999 10 8 9.1 8 8 C 8 6.9 8.899999 6 10 6 z M 10 14 C 7.329999 14 2 15.34 2 18 L 2 20 L 13.007812 20 A 5 5 0 0 1 12.105469 18 L 4 18 C 4.23 17.28 7.309999 16 10 16 C 10.681642 16 11.388828 16.082448 12.068359 16.216797 A 5 5 0 0 1 12.771484 14.34375 C 11.755351 14.12326 10.766662 14 10 14 z" /> + android:pathData="M 18 8 L 18 10 L 18 14.173828 A 3 3 0 0 0 17 14 A 3 3 0 0 0 14 17 A 3 3 0 0 0 17 20 A 3 3 0 0 0 20 17 L 20 10 L 22 10 L 22 8 L 20 8 L 18 8 z M 17 16 A 1 1 0 0 1 18 17 A 1 1 0 0 1 17 18 A 1 1 0 0 1 16 17 A 1 1 0 0 1 17 16 z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_audiotrack_black_24dp.xml b/app/src/main/res/drawable/ic_audiotrack_black_24dp.xml index e8bf1b5fb..7575cd187 100644 --- a/app/src/main/res/drawable/ic_audiotrack_black_24dp.xml +++ b/app/src/main/res/drawable/ic_audiotrack_black_24dp.xml @@ -6,5 +6,5 @@ android:viewportHeight="24"> + android:pathData="M12 3v10.55c-0.59-0.34-1.27-0.55-2-0.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6zm-2 16c-1.1 0-2-0.9-2-2s0.9-2 2-2 2 0.9 2 2-0.9 2-2 2z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_audiotrack_selected_black_24dp.xml b/app/src/main/res/drawable/ic_audiotrack_selected_black_24dp.xml new file mode 100644 index 000000000..9ae3e2b33 --- /dev/null +++ b/app/src/main/res/drawable/ic_audiotrack_selected_black_24dp.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_bug_report_white_24dp.xml b/app/src/main/res/drawable/ic_bug_report_white_24dp.xml index 089ff0f3d..e3b7a77ef 100644 --- a/app/src/main/res/drawable/ic_bug_report_white_24dp.xml +++ b/app/src/main/res/drawable/ic_bug_report_white_24dp.xml @@ -5,7 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> + + android:pathData="M20 8h-2.81c-0.45-0.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5s-0.96 0.06 -1.41 0.17 L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-0.05 0.33 -0.09 0.66 -0.09 1v1H4v2h2v1c0 0.34 0.04 0.67 0.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c0.05-0.33 0.09 -0.66 0.09 -1v-1h2v-2h-2v-1c0-0.34-0.04-0.67-0.09-1H20V8zm-4 4v3c0 0.22-0.03 0.47 -0.07 0.7 l-0.1 0.65 -0.37 0.65 c-0.72 1.24-2.04 2-3.46 2s-2.74-0.77-3.46-2l-0.37-0.64-0.1-0.65C8.03 15.48 8 15.23 8 15v-4c0-0.23 0.03 -0.48 0.07 -0.7l0.1-0.65 0.37 -0.65c0.3-0.52 0.72 -0.97 1.21-1.31l0.57-0.39 0.74 -0.18c0.31-0.08 0.63 -0.12 0.94 -0.12 0.32 0 0.63 0.04 0.95 0.12 l0.68 0.16 0.61 0.42 c0.5 0.34 0.91 0.78 1.21 1.31l0.38 0.65 0.1 0.65 c0.04 0.22 0.07 0.47 0.07 0.69 v1zm-6 2h4v2h-4zm0-4h4v2h-4z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_card_giftcard_white_24dp.xml b/app/src/main/res/drawable/ic_card_giftcard_white_24dp.xml index cd0006323..2da45ec5a 100644 --- a/app/src/main/res/drawable/ic_card_giftcard_white_24dp.xml +++ b/app/src/main/res/drawable/ic_card_giftcard_white_24dp.xml @@ -7,5 +7,5 @@ + android:pathData="M20 6h-2.18c0.11-0.31 0.18 -0.65 0.18 -1 0-1.66-1.34-3-3-3-1.05 0-1.96 0.54 -2.5 1.35l-0.5 0.67 -0.5-0.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 0.35 0.07 0.69 0.18 1H4c-1.11 0-1.99 0.89 -1.99 2L2 19c0 1.11 0.89 2 2 2h16c1.11 0 2-0.89 2-2V8c0-1.11-0.89-2-2-2zm-5-2c0.55 0 1 0.45 1 1s-0.45 1-1 1-1-0.45-1-1 0.45-1 1-1zM9 4c0.55 0 1 0.45 1 1s-0.45 1-1 1-1-0.45-1-1 0.45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 12 7.4l3.38 4.6L17 10.83 14.92 8H20v6z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_clear_all_black_24dp.xml b/app/src/main/res/drawable/ic_clear_all_black_24dp.xml index 36952839a..94db9248b 100644 --- a/app/src/main/res/drawable/ic_clear_all_black_24dp.xml +++ b/app/src/main/res/drawable/ic_clear_all_black_24dp.xml @@ -1,9 +1,10 @@ + + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> - + android:pathData="M5 13h14v-2H5v2zm-2 4h14v-2H3v2zM7 7v2h14V7H7z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_close_white_24dp.xml b/app/src/main/res/drawable/ic_close_white_24dp.xml index f67753035..555e3b316 100644 --- a/app/src/main/res/drawable/ic_close_white_24dp.xml +++ b/app/src/main/res/drawable/ic_close_white_24dp.xml @@ -1,9 +1,11 @@ + - - + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_delete_white_24dp.xml b/app/src/main/res/drawable/ic_delete_white_24dp.xml index fe21e6329..600e1ea37 100644 --- a/app/src/main/res/drawable/ic_delete_white_24dp.xml +++ b/app/src/main/res/drawable/ic_delete_white_24dp.xml @@ -5,7 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> + + android:pathData="M16 9v10H8V9h8m-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1 0.9 2 2 2h8c1.1 0 2-0.9 2-2V7z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_disc_full_black_24dp.xml b/app/src/main/res/drawable/ic_disc_full_black_24dp.xml new file mode 100644 index 000000000..95b60042b --- /dev/null +++ b/app/src/main/res/drawable/ic_disc_full_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit_white_24dp.xml b/app/src/main/res/drawable/ic_edit_white_24dp.xml index b60897eed..2dd6d0d40 100644 --- a/app/src/main/res/drawable/ic_edit_white_24dp.xml +++ b/app/src/main/res/drawable/ic_edit_white_24dp.xml @@ -1,9 +1,11 @@ + + - + android:pathData="M14.06 9.02l0.92 0.92 L5.92 19H5v-0.92l9.06-9.06M17.66 3c-0.25 0-0.51 0.1 -0.7 0.29 l-1.83 1.83 3.75 3.75 1.83-1.83c0.39-0.39 0.39 -1.02 0-1.41l-2.34-2.34c-0.2-0.2-0.45-0.29-0.71-0.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_equalizer_white_24dp.xml b/app/src/main/res/drawable/ic_equalizer_white_24dp.xml index 01c446b5f..2323f94bd 100644 --- a/app/src/main/res/drawable/ic_equalizer_white_24dp.xml +++ b/app/src/main/res/drawable/ic_equalizer_white_24dp.xml @@ -1,9 +1,12 @@ + + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + - + android:pathData="M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_favorite_border_white_24dp.xml b/app/src/main/res/drawable/ic_favorite_border_white_24dp.xml index 5e0d0bde6..70a8901fc 100644 --- a/app/src/main/res/drawable/ic_favorite_border_white_24dp.xml +++ b/app/src/main/res/drawable/ic_favorite_border_white_24dp.xml @@ -1,9 +1,11 @@ + - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_favorite_white_24dp.xml b/app/src/main/res/drawable/ic_favorite_white_24dp.xml index 665290592..598ed9b5f 100644 --- a/app/src/main/res/drawable/ic_favorite_white_24dp.xml +++ b/app/src/main/res/drawable/ic_favorite_white_24dp.xml @@ -1,9 +1,11 @@ + - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_folder_white_24dp.xml b/app/src/main/res/drawable/ic_folder_white_24dp.xml index f9590fd99..358bc626c 100644 --- a/app/src/main/res/drawable/ic_folder_white_24dp.xml +++ b/app/src/main/res/drawable/ic_folder_white_24dp.xml @@ -7,5 +7,5 @@ + android:pathData="M9.17 6l2 2H20v10H4V6h5.17M10 4H4c-1.1 0-1.99 0.9 -1.99 2L2 18c0 1.1 0.9 2 2 2h16c1.1 0 2-0.9 2-2V8c0-1.1-0.9-2-2-2h-8l-2-2z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_help_white_24dp.xml b/app/src/main/res/drawable/ic_help_white_24dp.xml index d264f1e87..8c245fcf2 100644 --- a/app/src/main/res/drawable/ic_help_white_24dp.xml +++ b/app/src/main/res/drawable/ic_help_white_24dp.xml @@ -1,9 +1,12 @@ + - - + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_home_selected_white_24dp.xml b/app/src/main/res/drawable/ic_home_selected_white_24dp.xml new file mode 100644 index 000000000..1ce34292f --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected_white_24dp.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_home_white_24dp.xml b/app/src/main/res/drawable/ic_home_white_24dp.xml index 1091e7a0e..75b433712 100644 --- a/app/src/main/res/drawable/ic_home_white_24dp.xml +++ b/app/src/main/res/drawable/ic_home_white_24dp.xml @@ -5,7 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> + + android:pathData="M12 5.69l5 4.5V18h-2v-6H9v6H7v-7.81l5-4.5M12 3L2 12h3v8h6v-6h2v6h6v-8h3L12 3z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_image_white_24dp.xml b/app/src/main/res/drawable/ic_image_white_24dp.xml index 85e5b4d12..1d0d03613 100644 --- a/app/src/main/res/drawable/ic_image_white_24dp.xml +++ b/app/src/main/res/drawable/ic_image_white_24dp.xml @@ -5,7 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> + + android:pathData="M19 5v14H5V5h14m0-2H5c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h14c1.1 0 2-0.9 2-2V5c0-1.1-0.9-2-2-2zm-4.86 8.86l-3 3.87L9 13.14 6 17h12l-3.86-5.14z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml b/app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml index 3727871aa..fbe65eb04 100644 --- a/app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml +++ b/app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml @@ -2,11 +2,10 @@ + android:viewportWidth="24" + android:viewportHeight="24"> - + android:pathData="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_keyboard_arrow_right_white_24dp.xml b/app/src/main/res/drawable/ic_keyboard_arrow_right_white_24dp.xml index faa8d22ee..80e5acc7d 100644 --- a/app/src/main/res/drawable/ic_keyboard_arrow_right_white_24dp.xml +++ b/app/src/main/res/drawable/ic_keyboard_arrow_right_white_24dp.xml @@ -2,11 +2,11 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_keyboard_arrow_up_24dp.xml b/app/src/main/res/drawable/ic_keyboard_arrow_up_24dp.xml index 37ec57fd2..a127ed524 100755 --- a/app/src/main/res/drawable/ic_keyboard_arrow_up_24dp.xml +++ b/app/src/main/res/drawable/ic_keyboard_arrow_up_24dp.xml @@ -5,9 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> - + + android:pathData="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_keyboard_backspace_black_24dp.xml b/app/src/main/res/drawable/ic_keyboard_backspace_black_24dp.xml index 60e7cafbe..8ae23acb7 100644 --- a/app/src/main/res/drawable/ic_keyboard_backspace_black_24dp.xml +++ b/app/src/main/res/drawable/ic_keyboard_backspace_black_24dp.xml @@ -5,8 +5,7 @@ android:viewportWidth="24" android:viewportHeight="24"> - + android:pathData="M21 11H6.83l3.58-3.59L9 6l-6 6 6 6 1.41-1.41L6.83 13H21v-2z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_library_add_white_24dp.xml b/app/src/main/res/drawable/ic_library_add_white_24dp.xml index b3313a88b..7863ff916 100644 --- a/app/src/main/res/drawable/ic_library_add_white_24dp.xml +++ b/app/src/main/res/drawable/ic_library_add_white_24dp.xml @@ -4,8 +4,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + android:pathData="M4 6H2v14c0 1.1 0.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 0.9-2 2v12c0 1.1 0.9 2 2 2h12c1.1 0 2-0.9 2-2V4c0-1.1-0.9-2-2-2zm0 14H8V4h12v12zm-7-2h2v-3h3V9h-3V6h-2v3h-3v2h3z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_library_music_white_24dp.xml b/app/src/main/res/drawable/ic_library_music_white_24dp.xml index 355309b2f..03de8419c 100644 --- a/app/src/main/res/drawable/ic_library_music_white_24dp.xml +++ b/app/src/main/res/drawable/ic_library_music_white_24dp.xml @@ -5,8 +5,7 @@ android:viewportWidth="24" android:viewportHeight="24"> - + android:pathData="M20 2H8c-1.1 0-2 0.9-2 2v12c0 1.1 0.9 2 2 2h12c1.1 0 2-0.9 2-2V4c0-1.1-0.9-2-2-2zm0 14H8V4h12v12zm-7.5-1c1.38 0 2.5-1.12 2.5-2.5V7h3V5h-4v5.51c-0.42-0.32-0.93-0.51-1.5-0.51-1.38 0-2.5 1.12-2.5 2.5s1.12 2.5 2.5 2.5zM4 6H2v14c0 1.1 0.9 2 2 2h14v-2H4V6z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu_white_24dp.xml b/app/src/main/res/drawable/ic_menu_white_24dp.xml index a6045b306..ecd8a598c 100644 --- a/app/src/main/res/drawable/ic_menu_white_24dp.xml +++ b/app/src/main/res/drawable/ic_menu_white_24dp.xml @@ -5,8 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> - + + android:pathData="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_mic_white_24dp.xml b/app/src/main/res/drawable/ic_mic_white_24dp.xml index 441e9045b..1c655c304 100644 --- a/app/src/main/res/drawable/ic_mic_white_24dp.xml +++ b/app/src/main/res/drawable/ic_mic_white_24dp.xml @@ -1,12 +1,11 @@ + + android:viewportWidth="24" + android:viewportHeight="24"> + - - + android:pathData="M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm-1-9c0-0.55 0.45 -1 1-1s1 0.45 1 1v6c0 0.55-0.45 1-1 1s-1-0.45-1-1V5zm6 6c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-0.49 6-3.39 6-6.92h-2z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_notifications_active_white_24dp.xml b/app/src/main/res/drawable/ic_notifications_active_white_24dp.xml index 08874789c..d6b02bfac 100644 --- a/app/src/main/res/drawable/ic_notifications_active_white_24dp.xml +++ b/app/src/main/res/drawable/ic_notifications_active_white_24dp.xml @@ -1,18 +1,12 @@ + + android:viewportWidth="24" + android:viewportHeight="24"> + + - - - - + android:pathData="M12 22c1.1 0 2-0.9 2-2h-4c0 1.1 0.9 2 2 2zm6-6v-5c0-3.07-1.63-5.64-4.5-6.32V4c0-0.83-0.67-1.5-1.5-1.5s-1.5 0.67 -1.5 1.5v0.68C7.64 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-2 1H8v-6c0-2.48 1.51-4.5 4-4.5s4 2.02 4 4.5v6zM7.58 4.08L6.15 2.65C3.75 4.48 2.17 7.3 2.03 10.5h2c0.15-2.65 1.51-4.97 3.55-6.42zm12.39 6.42h2c-0.15-3.2-1.73-6.02-4.12-7.85l-1.42 1.43c2.02 1.45 3.39 3.77 3.54 6.42z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_open_in_browser_white_24dp.xml b/app/src/main/res/drawable/ic_open_in_browser_white_24dp.xml index 27f24c05a..d58b804f1 100644 --- a/app/src/main/res/drawable/ic_open_in_browser_white_24dp.xml +++ b/app/src/main/res/drawable/ic_open_in_browser_white_24dp.xml @@ -1,9 +1,12 @@ + + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + - + android:pathData="M19 4H5c-1.11 0-2 0.9-2 2v12c0 1.1 0.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-0.9 2-2V6c0-1.1-0.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_pause_white_24dp.xml b/app/src/main/res/drawable/ic_pause_white_24dp.xml index f1286d809..34aa67ae3 100644 --- a/app/src/main/res/drawable/ic_pause_white_24dp.xml +++ b/app/src/main/res/drawable/ic_pause_white_24dp.xml @@ -1,11 +1,12 @@ + android:fillType="evenOdd" + android:pathData="M17 6H15V18H17V6ZM15 4H13V6V18V20H15H17H19V18V6V4H17H15ZM8 6H6V18H8V6ZM6 4H4V6V18V20H6H8H10V18V6V4H8H6Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_pause_white_big.xml b/app/src/main/res/drawable/ic_pause_white_big.xml index 17522ff13..5d9dea57c 100644 --- a/app/src/main/res/drawable/ic_pause_white_big.xml +++ b/app/src/main/res/drawable/ic_pause_white_big.xml @@ -4,8 +4,9 @@ android:height="64dp" android:viewportWidth="24" android:viewportHeight="24"> + - + android:fillType="evenOdd" + android:pathData="M17 6H15V18H17V6ZM15 4H13V6V18V20H15H17H19V18V6V4H17H15ZM8 6H6V18H8V6ZM6 4H4V6V18V20H6H8H10V18V6V4H8H6Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_play_arrow_white_24dp.xml b/app/src/main/res/drawable/ic_play_arrow_white_24dp.xml index fb3b758d1..646e0113c 100644 --- a/app/src/main/res/drawable/ic_play_arrow_white_24dp.xml +++ b/app/src/main/res/drawable/ic_play_arrow_white_24dp.xml @@ -7,5 +7,5 @@ + android:pathData="M10 8.64L15.27 12 10 15.36V8.64M8 5v14l11-7L8 5z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_play_arrow_white_big.xml b/app/src/main/res/drawable/ic_play_arrow_white_big.xml index 22124ee1d..ec6ea0b65 100644 --- a/app/src/main/res/drawable/ic_play_arrow_white_big.xml +++ b/app/src/main/res/drawable/ic_play_arrow_white_big.xml @@ -6,5 +6,5 @@ android:viewportHeight="24"> + android:pathData="M10 8.64L15.27 12 10 15.36V8.64M8 5v14l11-7L8 5z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_play_circle_filled_white_24dp.xml b/app/src/main/res/drawable/ic_play_circle_filled_white_24dp.xml index d353caacb..b03fe1931 100644 --- a/app/src/main/res/drawable/ic_play_circle_filled_white_24dp.xml +++ b/app/src/main/res/drawable/ic_play_circle_filled_white_24dp.xml @@ -5,7 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> + + android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-2-3.5l6-4.5-6-4.5z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_playlist_add_white_24dp.xml b/app/src/main/res/drawable/ic_playlist_add_white_24dp.xml index 3134b1311..a4bc4e8b8 100644 --- a/app/src/main/res/drawable/ic_playlist_add_white_24dp.xml +++ b/app/src/main/res/drawable/ic_playlist_add_white_24dp.xml @@ -7,5 +7,5 @@ + android:pathData="M14 10H2v2h12v-2zm0-4H2v2h12V6zm4 8v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zM2 16h8v-2H2v2z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_playlist_play_white_24dp.xml b/app/src/main/res/drawable/ic_playlist_play_white_24dp.xml index ab10bd465..1eb1b4429 100644 --- a/app/src/main/res/drawable/ic_playlist_play_white_24dp.xml +++ b/app/src/main/res/drawable/ic_playlist_play_white_24dp.xml @@ -5,7 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> + + android:pathData="M4 10h12v2H4zm0-4h12v2H4zm0 8h8v2H4zm10 0v6l5-3z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_queue_music_selected_white_24dp.xml b/app/src/main/res/drawable/ic_queue_music_selected_white_24dp.xml new file mode 100644 index 000000000..154e07154 --- /dev/null +++ b/app/src/main/res/drawable/ic_queue_music_selected_white_24dp.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_queue_music_white_24dp.xml b/app/src/main/res/drawable/ic_queue_music_white_24dp.xml index 51346ea3d..536adc9fc 100644 --- a/app/src/main/res/drawable/ic_queue_music_white_24dp.xml +++ b/app/src/main/res/drawable/ic_queue_music_white_24dp.xml @@ -1,12 +1,11 @@ - + android:pathData="M3 10h12v2H3zm0 4h8v2H3zm0-8h12v2H3zm14 8.18c-0.31-0.11-0.65-0.18-1-0.18-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3V8h3V6h-5v8.18zM16 18c-0.55 0-1-0.45-1-1s0.45-1 1-1 1 0.45 1 1-0.45 1-1 1z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_recent_actors_white_24dp.xml b/app/src/main/res/drawable/ic_recent_actors_white_24dp.xml deleted file mode 100644 index c4ba70186..000000000 --- a/app/src/main/res/drawable/ic_recent_actors_white_24dp.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_redo_white_24dp.xml b/app/src/main/res/drawable/ic_redo_white_24dp.xml index 07276a51c..14462f542 100644 --- a/app/src/main/res/drawable/ic_redo_white_24dp.xml +++ b/app/src/main/res/drawable/ic_redo_white_24dp.xml @@ -2,11 +2,11 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73 0.72 5.12 1.88L13 16h9V7l-3.6 3.6z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_repeat_one_white_24dp.xml b/app/src/main/res/drawable/ic_repeat_one_white_24dp.xml index 782dfcb45..64af7f6d5 100644 --- a/app/src/main/res/drawable/ic_repeat_one_white_24dp.xml +++ b/app/src/main/res/drawable/ic_repeat_one_white_24dp.xml @@ -2,11 +2,11 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4zm-4-2V9h-1l-2 1v1h1.5v4H13z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_repeat_white_24dp.xml b/app/src/main/res/drawable/ic_repeat_white_24dp.xml index 62cebf6d1..ca9078ffe 100644 --- a/app/src/main/res/drawable/ic_repeat_white_24dp.xml +++ b/app/src/main/res/drawable/ic_repeat_white_24dp.xml @@ -5,9 +5,8 @@ android:viewportWidth="24" android:viewportHeight="24"> - + + android:pathData="M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_retro_music_note_burst_mode_white_24dp.xml b/app/src/main/res/drawable/ic_retro_music_note_burst_mode_white_24dp.xml deleted file mode 100644 index ec16e95be..000000000 --- a/app/src/main/res/drawable/ic_retro_music_note_burst_mode_white_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_round_add_a_photo_white_24dp.xml b/app/src/main/res/drawable/ic_round_add_a_photo_white_24dp.xml deleted file mode 100644 index 0ebf2312b..000000000 --- a/app/src/main/res/drawable/ic_round_add_a_photo_white_24dp.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_save_white_24dp.xml b/app/src/main/res/drawable/ic_save_white_24dp.xml index c9d3d399d..6739a82ad 100644 --- a/app/src/main/res/drawable/ic_save_white_24dp.xml +++ b/app/src/main/res/drawable/ic_save_white_24dp.xml @@ -2,11 +2,11 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M17 3H5c-1.11 0-2 0.9-2 2v14c0 1.1 0.89 2 2 2h14c1.1 0 2-0.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_scanner_white_24dp.xml b/app/src/main/res/drawable/ic_scanner_white_24dp.xml index 28ccf0650..404f47503 100644 --- a/app/src/main/res/drawable/ic_scanner_white_24dp.xml +++ b/app/src/main/res/drawable/ic_scanner_white_24dp.xml @@ -1,9 +1,12 @@ + - - + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search_white_24dp.xml b/app/src/main/res/drawable/ic_search_white_24dp.xml index 4408efa20..a035c8c50 100644 --- a/app/src/main/res/drawable/ic_search_white_24dp.xml +++ b/app/src/main/res/drawable/ic_search_white_24dp.xml @@ -1,9 +1,11 @@ + + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M15.5 14h-0.79l-0.28-0.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-0.59 4.23-1.57l0.27 0.28 v0.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_settings_white_24dp.xml b/app/src/main/res/drawable/ic_settings_white_24dp.xml index 03555a891..667dd58b9 100644 --- a/app/src/main/res/drawable/ic_settings_white_24dp.xml +++ b/app/src/main/res/drawable/ic_settings_white_24dp.xml @@ -1,9 +1,11 @@ + + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M19.43 12.98c0.04-0.32 0.07 -0.64 0.07 -0.98 0-0.34-0.03-0.66-0.07-0.98l2.11-1.65c0.19-0.15 0.24 -0.42 0.12 -0.64l-2-3.46c-0.09-0.16-0.26-0.25-0.44-0.25-0.06 0-0.12 0.01 -0.17 0.03 l-2.49 1c-0.52-0.4-1.08-0.73-1.69-0.98l-0.38-2.65C14.46 2.18 14.25 2 14 2h-4c-0.25 0-0.46 0.18 -0.49 0.42 l-0.38 2.65c-0.61 0.25 -1.17 0.59 -1.69 0.98 l-2.49-1c-0.06-0.02-0.12-0.03-0.18-0.03-0.17 0-0.34 0.09 -0.43 0.25 l-2 3.46c-0.13 0.22 -0.07 0.49 0.12 0.64 l2.11 1.65c-0.04 0.32 -0.07 0.65 -0.07 0.98 0 0.33 0.03 0.66 0.07 0.98l-2.11 1.65c-0.19 0.15 -0.24 0.42 -0.12 0.64 l2 3.46c0.09 0.16 0.26 0.25 0.44 0.25 0.06 0 0.12-0.01 0.17 -0.03l2.49-1c0.52 0.4 1.08 0.73 1.69 0.98 l0.38 2.65c0.03 0.24 0.24 0.42 0.49 0.42 h4c0.25 0 0.46-0.18 0.49 -0.42l0.38-2.65c0.61-0.25 1.17-0.59 1.69-0.98l2.49 1c0.06 0.02 0.12 0.03 0.18 0.03 0.17 0 0.34-0.09 0.43 -0.25l2-3.46c0.12-0.22 0.07 -0.49-0.12-0.64l-2.11-1.65zm-1.98-1.71c0.04 0.31 0.05 0.52 0.05 0.73 0 0.21-0.02 0.43 -0.05 0.73 l-0.14 1.13 0.89 0.7 1.08 0.84 -0.7 1.21-1.27-0.51-1.04-0.42-0.9 0.68 c-0.43 0.32 -0.84 0.56 -1.25 0.73 l-1.06 0.43 -0.16 1.13-0.2 1.35h-1.4l-0.19-1.35-0.16-1.13-1.06-0.43c-0.43-0.18-0.83-0.41-1.23-0.71l-0.91-0.7-1.06 0.43 -1.27 0.51 -0.7-1.21 1.08-0.84 0.89 -0.7-0.14-1.13c-0.03-0.31-0.05-0.54-0.05-0.74s0.02-0.43 0.05 -0.73l0.14-1.13-0.89-0.7-1.08-0.84 0.7 -1.21 1.27 0.51 1.04 0.42 0.9-0.68c0.43-0.32 0.84 -0.56 1.25-0.73l1.06-0.43 0.16 -1.13 0.2 -1.35h1.39l0.19 1.35 0.16 1.13 1.06 0.43 c0.43 0.18 0.83 0.41 1.23 0.71 l0.91 0.7 1.06-0.43 1.27-0.51 0.7 1.21-1.07 0.85 -0.89 0.7 0.14 1.13zM12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-0.9-2-2s0.9-2 2-2 2 0.9 2 2-0.9 2-2 2z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_share_white_24dp.xml b/app/src/main/res/drawable/ic_share_white_24dp.xml index fbcafd126..1446f1dfa 100644 --- a/app/src/main/res/drawable/ic_share_white_24dp.xml +++ b/app/src/main/res/drawable/ic_share_white_24dp.xml @@ -1,9 +1,11 @@ + + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M18 16.08c-0.76 0-1.44 0.3 -1.96 0.77 L8.91 12.7c0.05-0.23 0.09 -0.46 0.09 -0.7s-0.04-0.47-0.09-0.7l7.05-4.11c0.54 0.5 1.25 0.81 2.04 0.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 0.24 0.04 0.47 0.09 0.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c0.79 0 1.5-0.31 2.04-0.81l7.12 4.16c-0.05 0.21 -0.08 0.43 -0.08 0.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92c0-1.61-1.31-2.92-2.92-2.92zM18 4c0.55 0 1 0.45 1 1s-0.45 1-1 1-1-0.45-1-1 0.45-1 1-1zM6 13c-0.55 0-1-0.45-1-1s0.45-1 1-1 1 0.45 1 1-0.45 1-1 1zm12 7.02c-0.55 0-1-0.45-1-1s0.45-1 1-1 1 0.45 1 1-0.45 1-1 1z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_shuffle_white_24dp.xml b/app/src/main/res/drawable/ic_shuffle_white_24dp.xml index c333702e8..e56b2e366 100644 --- a/app/src/main/res/drawable/ic_shuffle_white_24dp.xml +++ b/app/src/main/res/drawable/ic_shuffle_white_24dp.xml @@ -2,11 +2,10 @@ + android:viewportWidth="24" + android:viewportHeight="24"> - + android:pathData="M10.59 9.17L5.41 4 4 5.41l5.17 5.17 1.42-1.41zM14.5 4l2.04 2.04L4 18.59 5.41 20 17.96 7.46 20 9.5V4h-5.5zm0.33 9.41l-1.41 1.41 3.13 3.13L14.5 20H20v-5.5l-2.04 2.04-3.13-3.13z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_skip_next_white_24dp.xml b/app/src/main/res/drawable/ic_skip_next_white_24dp.xml index 29d493bab..97ac01fd1 100644 --- a/app/src/main/res/drawable/ic_skip_next_white_24dp.xml +++ b/app/src/main/res/drawable/ic_skip_next_white_24dp.xml @@ -5,8 +5,7 @@ android:viewportWidth="24" android:viewportHeight="24"> - + android:pathData="M6 18l8.5-6L6 6v12zm2-8.14L11.03 12 8 14.14V9.86zM16 6h2v12h-2z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_skip_previous_white_24dp.xml b/app/src/main/res/drawable/ic_skip_previous_white_24dp.xml index ec3f16611..0387843d2 100644 --- a/app/src/main/res/drawable/ic_skip_previous_white_24dp.xml +++ b/app/src/main/res/drawable/ic_skip_previous_white_24dp.xml @@ -5,8 +5,7 @@ android:viewportHeight="24" android:viewportWidth="24"> - + android:pathData="M6 6h2v12H6zm3.5 6l8.5 6V6l-8.5 6zm6.5 2.14L12.97 12 16 9.86v4.28z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_sort_white_24dp.xml b/app/src/main/res/drawable/ic_sort_white_24dp.xml index 11cc50911..148d60f40 100644 --- a/app/src/main/res/drawable/ic_sort_white_24dp.xml +++ b/app/src/main/res/drawable/ic_sort_white_24dp.xml @@ -2,11 +2,11 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_star_white_24dp.xml b/app/src/main/res/drawable/ic_star_white_24dp.xml index a16151f07..f688ccaa3 100644 --- a/app/src/main/res/drawable/ic_star_white_24dp.xml +++ b/app/src/main/res/drawable/ic_star_white_24dp.xml @@ -1,9 +1,12 @@ + - - + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_theme_palette_white_24dp.xml b/app/src/main/res/drawable/ic_theme_palette_white_24dp.xml index 3673e4d0e..c8b923330 100644 --- a/app/src/main/res/drawable/ic_theme_palette_white_24dp.xml +++ b/app/src/main/res/drawable/ic_theme_palette_white_24dp.xml @@ -1,9 +1,23 @@ + - - + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_timer_white_24dp.xml b/app/src/main/res/drawable/ic_timer_white_24dp.xml index e71a9b8e3..53eef814b 100644 --- a/app/src/main/res/drawable/ic_timer_white_24dp.xml +++ b/app/src/main/res/drawable/ic_timer_white_24dp.xml @@ -1,9 +1,12 @@ + + android:viewportWidth="24" + android:viewportHeight="24"> + + - + android:pathData="M15.07 1.01h-6v2h6v-2zm-4 13h2v-6h-2v6zm8.03-6.62l1.42-1.42c-0.43-0.51-0.9-0.99-1.41-1.41l-1.42 1.42C16.14 4.74 14.19 4 12.07 4c-4.97 0-9 4.03-9 9s4.02 9 9 9 9-4.03 9-9c0-2.11-0.74-4.06-1.97-5.61zm-7.03 12.62c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_trending_up_white_24dp.xml b/app/src/main/res/drawable/ic_trending_up_white_24dp.xml index 573d84f3c..abf201b92 100644 --- a/app/src/main/res/drawable/ic_trending_up_white_24dp.xml +++ b/app/src/main/res/drawable/ic_trending_up_white_24dp.xml @@ -2,11 +2,11 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6h-6z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_unfold_more_black_24dp.xml b/app/src/main/res/drawable/ic_unfold_more_black_24dp.xml index 6c9dac139..1e936ba02 100644 --- a/app/src/main/res/drawable/ic_unfold_more_black_24dp.xml +++ b/app/src/main/res/drawable/ic_unfold_more_black_24dp.xml @@ -2,11 +2,11 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + - + android:pathData="M12 5.83L15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15 12 18.17z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_view_carousel_black_24dp.xml b/app/src/main/res/drawable/ic_view_carousel_black_24dp.xml index 41ae3b6c1..18a044207 100644 --- a/app/src/main/res/drawable/ic_view_carousel_black_24dp.xml +++ b/app/src/main/res/drawable/ic_view_carousel_black_24dp.xml @@ -2,11 +2,10 @@ + android:viewportWidth="24" + android:viewportHeight="24"> - + android:pathData="M2 6h4v11H2zm5 13h10V4H7v15zM9 6h6v11H9V6zm9 0h4v11h-4z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_volume_down_white_24dp.xml b/app/src/main/res/drawable/ic_volume_down_white_24dp.xml index 6961d21e3..992a363e9 100644 --- a/app/src/main/res/drawable/ic_volume_down_white_24dp.xml +++ b/app/src/main/res/drawable/ic_volume_down_white_24dp.xml @@ -2,11 +2,10 @@ + android:viewportWidth="24" + android:viewportHeight="24"> - + android:pathData="M16 7.97v8.05c1.48-0.73 2.5-2.25 2.5-4.02 0-1.77-1.02-3.29-2.5-4.03zM5 9v6h4l5 5V4L9 9H5zm7-0.17v6.34L9.83 13H7v-2h2.83L12 8.83z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_volume_off_white_24dp.xml b/app/src/main/res/drawable/ic_volume_off_white_24dp.xml index 66e655aa1..3b7a8c107 100644 --- a/app/src/main/res/drawable/ic_volume_off_white_24dp.xml +++ b/app/src/main/res/drawable/ic_volume_off_white_24dp.xml @@ -2,20 +2,11 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + - - - - + android:pathData="M4.34 2.93L2.93 4.34 7.29 8.7 7 9H3v6h4l5 5v-6.59l4.18 4.18c-0.65 0.49 -1.38 0.88 -2.18 1.11v2.06c1.34-0.3 2.57-0.92 3.61-1.75l2.05 2.05 1.41-1.41L4.34 2.93zM10 15.17L7.83 13H5v-2h2.83l0.88-0.88L10 11.41v3.76zM19 12c0 0.82-0.15 1.61-0.41 2.34l1.53 1.53c0.56-1.17 0.88 -2.48 0.88 -3.87 0-4.28-2.99-7.86-7-8.77v2.06c2.89 0.86 5 3.54 5 6.71zm-7-8l-1.88 1.88L12 7.76zm4.5 8c0-1.77-1.02-3.29-2.5-4.03v1.79l2.48 2.48c0.01-0.08 0.02 -0.16 0.02 -0.24z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_volume_up_white_24dp.xml b/app/src/main/res/drawable/ic_volume_up_white_24dp.xml index e8a80cca1..77e9c780b 100644 --- a/app/src/main/res/drawable/ic_volume_up_white_24dp.xml +++ b/app/src/main/res/drawable/ic_volume_up_white_24dp.xml @@ -2,11 +2,10 @@ + android:viewportWidth="24" + android:viewportHeight="24"> - + android:pathData="M3 9v6h4l5 5V4L7 9H3zm7-0.17v6.34L7.83 13H5v-2h2.83L10 8.83zM16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-0.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89 0.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-0.91 7-4.49 7-8.77 0-4.28-2.99-7.86-7-8.77z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/toggle_album.xml b/app/src/main/res/drawable/toggle_album.xml new file mode 100644 index 000000000..b3b79144c --- /dev/null +++ b/app/src/main/res/drawable/toggle_album.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/toggle_artist.xml b/app/src/main/res/drawable/toggle_artist.xml new file mode 100644 index 000000000..bcdcde7fb --- /dev/null +++ b/app/src/main/res/drawable/toggle_artist.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/toggle_audiotrack.xml b/app/src/main/res/drawable/toggle_audiotrack.xml new file mode 100644 index 000000000..3f400c6cc --- /dev/null +++ b/app/src/main/res/drawable/toggle_audiotrack.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/toggle_home.xml b/app/src/main/res/drawable/toggle_home.xml new file mode 100644 index 000000000..b97748a6d --- /dev/null +++ b/app/src/main/res/drawable/toggle_home.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/toggle_queue_music.xml b/app/src/main/res/drawable/toggle_queue_music.xml new file mode 100644 index 000000000..391986f00 --- /dev/null +++ b/app/src/main/res/drawable/toggle_queue_music.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-xlarge-land/fragment_player.xml b/app/src/main/res/layout-xlarge-land/fragment_player.xml index 14117735d..5c1ce354c 100644 --- a/app/src/main/res/layout-xlarge-land/fragment_player.xml +++ b/app/src/main/res/layout-xlarge-land/fragment_player.xml @@ -26,7 +26,7 @@ + app:srcCompat="@drawable/ic_add_photo_white_24dp" /> diff --git a/app/src/main/res/layout-xlarge/fragment_main_activity_recycler_view.xml b/app/src/main/res/layout-xlarge/fragment_main_activity_recycler_view.xml deleted file mode 100644 index 262cc45f7..000000000 --- a/app/src/main/res/layout-xlarge/fragment_main_activity_recycler_view.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/layout/activity_lyrics.xml b/app/src/main/res/layout/activity_lyrics.xml index 19aa19d03..26a49b242 100644 --- a/app/src/main/res/layout/activity_lyrics.xml +++ b/app/src/main/res/layout/activity_lyrics.xml @@ -1,60 +1,65 @@ - - - - - - - - - - - - - - + android:orientation="vertical"> + + + + + + + + + + + + + + + + - - \ No newline at end of file + android:layout_margin="16dp" + android:src="@drawable/ic_edit_white_24dp" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_playlist_detail.xml b/app/src/main/res/layout/activity_playlist_detail.xml index 6767488c0..8579961c1 100644 --- a/app/src/main/res/layout/activity_playlist_detail.xml +++ b/app/src/main/res/layout/activity_playlist_detail.xml @@ -72,24 +72,37 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior" /> - + android:gravity="center" + android:orientation="vertical"> + + + + + diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml index 7f2d58216..3853306ff 100755 --- a/app/src/main/res/layout/activity_search.xml +++ b/app/src/main/res/layout/activity_search.xml @@ -18,46 +18,47 @@ android:layout_height="match_parent" android:orientation="vertical"> - + android:gravity="center_vertical"> - + + - - + android:layout_weight="1" + app:cardCornerRadius="25dp" + app:cardElevation="0dp" + app:cardUseCompatPadding="true"> + android:hint="@string/action_search" + android:inputType="text|textAutoComplete" + android:padding="12dp" /> - - - + + + + + app:srcCompat="@drawable/ic_add_photo_white_24dp" /> diff --git a/app/src/main/res/layout/dialog_delete.xml b/app/src/main/res/layout/dialog_delete.xml index 9e2e79ade..1cb0d9ee8 100644 --- a/app/src/main/res/layout/dialog_delete.xml +++ b/app/src/main/res/layout/dialog_delete.xml @@ -1,38 +1,35 @@ - + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:gravity="start|center_vertical" + android:text="@string/remove_action" + android:textAllCaps="false" /> - + - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_album_cover.xml b/app/src/main/res/layout/fragment_album_cover.xml index 28967ad98..13ef5e702 100644 --- a/app/src/main/res/layout/fragment_album_cover.xml +++ b/app/src/main/res/layout/fragment_album_cover.xml @@ -3,7 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_gravity="center"> - + - - - - - + android:layout_marginStart="16dp" + android:gravity="center_vertical" + android:scaleType="centerCrop" /> diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml index e6ac016e1..d867e4a88 100644 --- a/app/src/main/res/layout/fragment_library.xml +++ b/app/src/main/res/layout/fragment_library.xml @@ -34,36 +34,29 @@ android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways"> - + - + - - - - - - + + @@ -13,14 +15,27 @@ android:layoutAnimation="@anim/layout_animation_fall_down" android:scrollbars="none" /> - + android:gravity="center" + android:orientation="vertical" + android:visibility="gone"> + + + + diff --git a/app/src/main/res/layout/fragment_main_options.xml b/app/src/main/res/layout/fragment_main_options.xml index 656e96f10..34c849ac8 100644 --- a/app/src/main/res/layout/fragment_main_options.xml +++ b/app/src/main/res/layout/fragment_main_options.xml @@ -5,6 +5,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" + android:paddingStart="8dp" + android:paddingEnd="8dp" tools:ignore="MissingPrefix"> + app:icon="@drawable/ic_folder_white_24dp" /> + app:icon="@drawable/ic_equalizer_white_24dp" /> + app:icon="@drawable/ic_timer_white_24dp" /> + app:icon="@drawable/ic_share_white_24dp" /> + app:icon="@drawable/ic_bug_report_white_24dp" /> + app:icon="@drawable/ic_help_white_24dp" /> + app:icon="@drawable/ic_star_white_24dp" /> + app:icon="@drawable/ic_card_giftcard_white_24dp" /> \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_navigation_main.xml b/app/src/main/res/menu/bottom_navigation_main.xml index d24122585..b6b9b8476 100644 --- a/app/src/main/res/menu/bottom_navigation_main.xml +++ b/app/src/main/res/menu/bottom_navigation_main.xml @@ -4,28 +4,28 @@ \ No newline at end of file diff --git a/app/src/main/res/menu/menu_cast.xml b/app/src/main/res/menu/menu_cast.xml deleted file mode 100644 index 7b49bc1e3..000000000 --- a/app/src/main/res/menu/menu_cast.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 8d9d66bcb..8c11e717b 100755 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -187,14 +187,6 @@ retro - - - @id/cast_button_type_empty - @id/cast_button_type_rewind_30_seconds - @id/cast_button_type_mute_toggle - @id/cast_button_type_empty - - @string/normal @string/small diff --git a/app/src/main/res/values/cast_style.xml b/app/src/main/res/values/cast_style.xml deleted file mode 100644 index 9f7f3c576..000000000 --- a/app/src/main/res/values/cast_style.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index f69abf85b..96f43af69 100755 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -14,6 +14,4 @@ Google Plus GitHub Social Buttons - fonts/circular_std_black.otf - fonts/circular_std_book.otf \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index abd72beb3..52ddaf01a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -118,12 +118,22 @@ + + diff --git a/app/src/main/res/values/styles_parents.xml b/app/src/main/res/values/styles_parents.xml index 15f5d3ee7..31cfffd5c 100644 --- a/app/src/main/res/values/styles_parents.xml +++ b/app/src/main/res/values/styles_parents.xml @@ -60,8 +60,6 @@ @style/BottomSheetDialog - @style/BlackMediaRouterTheme - true @transition/grid_exit @transition/grid_exit @@ -103,8 +101,6 @@ @style/BottomSheetDialog - @style/WhiteMediaRouterTheme - true @transition/grid_exit @transition/grid_exit @@ -159,24 +155,6 @@ ?cardBackgroundColor - - - - - - - - - - diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index 509e62846..2434f4b9e 100755 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> = Build.VERSION_CODES.LOLLIPOP) { seekBar.setThumbTintList(s1); seekBar.setProgressTintList(s1); diff --git a/build.gradle b/build.gradle index 109919098..86392e337 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,11 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.10' + ext.kotlin_version = '1.3.11' ext { supportLibVersion = '1.0.0' firebase = "11.8.0" retrofit = "2.3.0" - butterKnife = "9.0.0-rc1" materialDialog = "0.9.6.0" } repositories { @@ -14,7 +13,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.4.0-alpha08' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -24,7 +23,6 @@ allprojects { google() jcenter() maven { url "https://jitpack.io" } - maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } } diff --git a/gradle.properties b/gradle.properties index 3632cbe6c..3e9a759ec 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,11 +8,13 @@ # The setting is particularly useful for tweaking memory settings. org.gradle.jvmargs=-Xmx2048M org.gradle.daemon=true -org.gradle.parallel=true +org.gradle.parallel=true # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true jvmArgs='-Xmx2048m' android.useAndroidX=true -android.enableJetifier=true +android.enabelR8=true +#android.enableR8.fullMode=true +android.enableJetifier=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d030dadba..f1dbe256c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Oct 03 11:17:01 IST 2018 +#Thu Dec 13 05:28:53 IST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-milestone-1-all.zip