Upgraded to AndroidX.

This commit is contained in:
casey langen 2019-03-31 17:42:55 -07:00
parent 305d032f86
commit f390a02a72
51 changed files with 213 additions and 196 deletions

View File

@ -34,13 +34,13 @@
#pragma once
#include <cursespp/Colors.h>
#include <cursespp/IOverlay.h>
#include <cursespp/LayoutBase.h>
#include <cursespp/OverlayStack.h>
#include <cursespp/TextLabel.h>
#include <cursespp/Checkbox.h>
#include <cursespp/TextInput.h>
#include <cursespp/Checkbox.h>
#include <cursespp/Colors.h>
#include <cursespp/ListWindow.h>
namespace cursespp {

View File

@ -19,7 +19,7 @@ android {
targetSdkVersion 28
versionCode 65
versionName "0.64.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
@ -51,7 +51,7 @@ repositories {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0-alpha4', {
exclude group: 'com.android.support', module: 'support-annotations'
})
@ -63,12 +63,12 @@ dependencies {
implementation 'org.slf4j:slf4j-android:1.7.21'
implementation "android.arch.persistence.room:runtime:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"
implementation "androidx.room:room-runtime:2.0.0"
kapt "androidx.room:room-compiler:2.0.0"
implementation "android.arch.lifecycle:runtime:1.1.1"
implementation "android.arch.lifecycle:extensions:1.1.1"
kapt "android.arch.lifecycle:compiler:1.1.1"
implementation "androidx.lifecycle:lifecycle-runtime:2.0.0"
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
kapt "androidx.lifecycle:lifecycle-compiler:2.0.0"
compileOnly 'org.glassfish:javax.annotation:10.0-b28'
implementation 'com.google.dagger:dagger:2.19'
@ -76,9 +76,9 @@ dependencies {
implementation 'com.neovisionaries:nv-websocket-client:1.31'
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
implementation 'com.github.bumptech.glide:glide:4.8.0'
implementation "com.github.bumptech.glide:okhttp3-integration:4.8.0"
kapt 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation "com.github.bumptech.glide:okhttp3-integration:4.9.0"
kapt 'com.github.bumptech.glide:compiler:4.9.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'io.reactivex.rxjava2:rxkotlin:2.3.0'
@ -87,11 +87,12 @@ dependencies {
implementation 'com.simplecityapps:recyclerview-fastscroll:1.0.20'
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.github.wooplr:Spotlight:1.2.3'
implementation 'me.zhanghai.android.materialprogressbar:library:1.6.1'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.media:media:1.0.1'
implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true
@ -100,10 +101,10 @@ dependencies {
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
configurations.all {
resolutionStrategy {
force 'com.android.support:animated-vector-drawable:28.0.0'
force 'com.android.support:support-v4:28.0.0'
}
}
// configurations.all {
// resolutionStrategy {
// force 'com.android.support:animated-vector-drawable:28.0.0'
// force 'com.android.support:support-v4:28.0.0'
// }
// }
}

View File

@ -27,7 +27,7 @@
public *;
}
-keep class android.support.v7.widget.SearchView { *; }
-keep class androidx.appcompat.widget.SearchView { *; }
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn android.arch.util.paging.CountedDataSource

View File

@ -1,6 +1,6 @@
package io.casey.musikcube.remote.injection
import android.arch.persistence.room.Room
import androidx.room.Room
import android.content.Context
import dagger.Module
import dagger.Provides

View File

@ -1,9 +1,9 @@
package io.casey.musikcube.remote.service.gapless.db;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.OnConflictStrategy;
import android.arch.persistence.room.Query;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import java.util.List;

View File

@ -1,22 +1,23 @@
package io.casey.musikcube.remote.service.gapless.db
import android.arch.persistence.room.Database
import android.arch.persistence.room.RoomDatabase
import androidx.room.Database
import androidx.room.RoomDatabase
import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
@Database(entities = arrayOf(GaplessTrack::class), version = 1)
@Database(entities = [GaplessTrack::class], version = 1)
abstract class GaplessDb: RoomDatabase() {
abstract fun dao(): GaplessDao
fun prune() {
@Suppress("unused")
Single.fromCallable {
dao().deleteByState(GaplessTrack.DOWNLOADING)
true
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ _ -> }, { })
.subscribe({ }, { })
}
}

View File

@ -1,14 +1,14 @@
package io.casey.musikcube.remote.service.gapless.db
import android.arch.persistence.room.Entity
import android.arch.persistence.room.PrimaryKey
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity
data class GaplessTrack(@PrimaryKey val id: Long?, val url: String, val state: Int) {
companion object {
val DOWNLOADING = 1
val DOWNLOADED = 2
val UPDATED = 3
val ERROR = 4
const val DOWNLOADING = 1
const val DOWNLOADED = 2
const val UPDATED = 3
const val ERROR = 4
}
}

View File

@ -1,7 +1,7 @@
package io.casey.musikcube.remote.service.playback.impl.streaming.db
import android.arch.persistence.room.Database
import android.arch.persistence.room.RoomDatabase
import androidx.room.Database
import androidx.room.RoomDatabase
import io.casey.musikcube.remote.Application
import io.casey.musikcube.remote.injection.DaggerDataComponent
import io.casey.musikcube.remote.service.playback.impl.remote.Metadata
@ -18,7 +18,7 @@ import org.json.JSONObject
import java.util.*
import javax.inject.Inject
@Database(entities = arrayOf(OfflineTrack::class), version = 1)
@Database(entities = [OfflineTrack::class], version = 1)
abstract class OfflineDb : RoomDatabase() {
@Inject lateinit var wss: WebSocketService
@Inject lateinit var streamProxy: StreamProxy

View File

@ -1,7 +1,7 @@
package io.casey.musikcube.remote.service.playback.impl.streaming.db
import android.arch.persistence.room.Entity
import android.arch.persistence.room.PrimaryKey
import androidx.room.Entity
import androidx.room.PrimaryKey
import io.casey.musikcube.remote.service.playback.impl.remote.Metadata
import io.casey.musikcube.remote.util.Strings
import org.json.JSONException

View File

@ -1,9 +1,9 @@
package io.casey.musikcube.remote.service.playback.impl.streaming.db;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.OnConflictStrategy;
import android.arch.persistence.room.Query;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import java.util.List;

View File

@ -3,7 +3,7 @@ package io.casey.musikcube.remote.service.system
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.support.v4.content.ContextCompat
import androidx.core.content.ContextCompat
import android.view.KeyEvent
class MediaButtonReceiver : BroadcastReceiver() {

View File

@ -9,12 +9,11 @@ import android.os.Build
import android.os.Handler
import android.os.IBinder
import android.os.PowerManager
import android.support.v4.app.NotificationCompat
import android.support.v4.content.ContextCompat
import android.support.v4.media.MediaMetadataCompat
import android.support.v4.media.app.NotificationCompat.MediaStyle
import android.support.v4.media.session.MediaSessionCompat
import android.support.v4.media.session.PlaybackStateCompat
import androidx.core.app.NotificationCompat
import androidx.core.content.ContextCompat
import android.util.Log
import android.view.KeyEvent
import com.bumptech.glide.load.engine.DiskCacheStrategy
@ -38,7 +37,7 @@ import io.casey.musikcube.remote.ui.shared.extension.fallback
import io.casey.musikcube.remote.ui.shared.util.Size
import io.casey.musikcube.remote.util.Debouncer
import io.casey.musikcube.remote.util.Strings
import android.support.v4.app.NotificationCompat.Action as NotifAction
import androidx.core.app.NotificationCompat.Action as NotifAction
import io.casey.musikcube.remote.ui.shared.util.AlbumArtLookup.getUrl as getAlbumArtUrl
/**
@ -62,7 +61,6 @@ class SystemService : Service() {
private lateinit var powerManager: PowerManager
private lateinit var prefs: SharedPreferences
private val handler = Handler()
private val albumArt = AlbumArt()
private val sessionData = SessionMetadata()
@ -249,7 +247,7 @@ class SystemService : Service() {
albumArt.reset(track)
albumArt.request = request
albumArt.target = request.into(
object: RequestFutureTarget<Bitmap>(handler, Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) {
object: RequestFutureTarget<Bitmap>(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) {
override fun onResourceReady(bitmap: Bitmap, transition: Transition<in Bitmap>?) {
/* make sure the instance's current request is the same as this request. it's
possible we had another download request come in before this one finished */
@ -326,7 +324,7 @@ class SystemService : Service() {
android.R.drawable.ic_media_play,
getString(R.string.button_play), ACTION_NOTIFICATION_PLAY))
notification.setStyle(MediaStyle()
notification.setStyle(androidx.media.app.NotificationCompat.MediaStyle()
.setShowActionsInCompactView(0)
.setMediaSession(mediaSession?.sessionToken))
}
@ -344,7 +342,7 @@ class SystemService : Service() {
android.R.drawable.ic_media_next,
getString(R.string.button_next), ACTION_NOTIFICATION_NEXT))
notification.setStyle(MediaStyle()
notification.setStyle(androidx.media.app.NotificationCompat.MediaStyle()
.setShowActionsInCompactView(0, 1, 2)
.setMediaSession(mediaSession?.sessionToken))
}
@ -357,7 +355,7 @@ class SystemService : Service() {
android.R.drawable.ic_menu_close_clear_cancel,
getString(R.string.button_close), ACTION_NOTIFICATION_STOP))
notification.setStyle(MediaStyle()
notification.setStyle(androidx.media.app.NotificationCompat.MediaStyle()
.setShowActionsInCompactView(0, 1)
.setMediaSession(mediaSession?.sessionToken))
}

View File

@ -1,7 +1,7 @@
package io.casey.musikcube.remote.ui.albums.adapter
import android.content.SharedPreferences
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View

View File

@ -1,10 +1,10 @@
package io.casey.musikcube.remote.ui.browse.adapter
import android.content.Context
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentPagerAdapter
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.service.playback.impl.remote.Metadata
import io.casey.musikcube.remote.ui.albums.fragment.AlbumBrowseFragment

View File

@ -1,12 +1,12 @@
package io.casey.musikcube.remote.ui.browse.fragment
import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.TabLayout
import android.support.v4.view.ViewPager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.viewpager.widget.ViewPager
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.tabs.TabLayout
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.ui.browse.adapter.BrowseFragmentAdapter
import io.casey.musikcube.remote.ui.browse.constant.Browse

View File

@ -1,6 +1,6 @@
package io.casey.musikcube.remote.ui.category.adapter
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

View File

@ -1,7 +1,7 @@
package io.casey.musikcube.remote.ui.category.adapter
import android.content.SharedPreferences
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View

View File

@ -4,11 +4,11 @@ import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.view.LayoutInflater
import android.view.Menu
import android.view.View
import android.view.ViewGroup
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.service.playback.impl.remote.Metadata

View File

@ -7,10 +7,10 @@ import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.support.v4.app.DialogFragment
import android.support.v7.app.AlertDialog
import android.view.*
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.wooplr.spotlight.SpotlightView
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.service.playback.Playback
@ -444,31 +444,35 @@ class MainActivity : BaseActivity() {
}
private fun checkShowSpotlight() {
val toolbarButton = findViewById<View>(R.id.action_remote_toggle)
if (!spotlightDisplayed && toolbarButton != null) {
SpotlightView.Builder(this@MainActivity)
.introAnimationDuration(400)
.enableRevealAnimation(true)
.performClick(true)
.fadeinTextDuration(400)
.headingTvColor(getColorCompat(R.color.color_accent))
.headingTvSize(24)
.headingTvText(getString(R.string.spotlight_playback_mode_title))
.subHeadingTvColor(Color.parseColor("#ffffff"))
.subHeadingTvSize(14)
.subHeadingTvText(getString(R.string.spotlight_playback_mode_message))
.maskColor(Color.parseColor("#dc000000"))
.target(toolbarButton)
.lineAnimDuration(400)
.lineAndArcColor(getColorCompat(R.color.color_primary))
.dismissOnTouch(true)
.dismissOnBackPress(true)
.enableDismissAfterShown(true)
.usageId(SPOTLIGHT_STREAMING_ID)
.show()
/* sometimes the spotlight animation doesn't play properly; let's try to delay it
for a bit to make it more reliable */
handler.postDelayed({
val toolbarButton = findViewById<View>(R.id.action_remote_toggle)
if (!paused && !spotlightDisplayed && toolbarButton != null) {
SpotlightView.Builder(this@MainActivity)
.introAnimationDuration(400)
.enableRevealAnimation(true)
.performClick(true)
.fadeinTextDuration(400)
.headingTvColor(getColorCompat(R.color.color_accent))
.headingTvSize(24)
.headingTvText(getString(R.string.spotlight_playback_mode_title))
.subHeadingTvColor(Color.parseColor("#ffffff"))
.subHeadingTvSize(14)
.subHeadingTvText(getString(R.string.spotlight_playback_mode_message))
.maskColor(Color.parseColor("#dc000000"))
.target(toolbarButton)
.lineAnimDuration(400)
.lineAndArcColor(getColorCompat(R.color.color_primary))
.dismissOnTouch(true)
.dismissOnBackPress(true)
.enableDismissAfterShown(true)
.usageId(SPOTLIGHT_STREAMING_ID)
.show()
spotlightDisplayed = true
}
spotlightDisplayed = true
}
}, 1000)
}
private fun checkShowApiMismatch() {

View File

@ -2,8 +2,8 @@ package io.casey.musikcube.remote.ui.home.fragment
import android.app.Dialog
import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.support.v7.app.AlertDialog
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.ui.settings.activity.SettingsActivity

View File

@ -4,7 +4,6 @@ import android.content.Context
import android.content.SharedPreferences
import android.graphics.Color
import android.graphics.drawable.Drawable
import android.support.annotation.AttrRes
import android.text.SpannableStringBuilder
import android.text.TextPaint
import android.text.method.LinkMovementMethod
@ -17,6 +16,7 @@ import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.AttrRes
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.engine.GlideException

View File

@ -2,9 +2,9 @@ package io.casey.musikcube.remote.ui.navigation
import android.content.Intent
import android.os.Bundle
import android.support.v4.app.ActivityOptionsCompat
import android.support.v4.util.Pair
import android.support.v7.app.AppCompatActivity
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityOptionsCompat
import androidx.core.util.Pair
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.service.playback.impl.remote.Metadata
import io.casey.musikcube.remote.service.websocket.model.IAlbum

View File

@ -1,7 +1,7 @@
package io.casey.musikcube.remote.ui.playqueue.adapter
import android.content.SharedPreferences
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

View File

@ -5,16 +5,16 @@ import android.app.Dialog
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.support.v7.app.AlertDialog
import android.support.v7.widget.DividerItemDecoration
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.uacf.taskrunner.Task
import com.uacf.taskrunner.Tasks
import io.casey.musikcube.remote.R

View File

@ -5,13 +5,13 @@ import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.support.v7.app.AlertDialog
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.uacf.taskrunner.Task
import com.uacf.taskrunner.Tasks
import io.casey.musikcube.remote.R

View File

@ -1,7 +1,7 @@
package io.casey.musikcube.remote.ui.settings.model
import android.arch.persistence.room.Entity
import android.arch.persistence.room.PrimaryKey
import androidx.room.Entity
import androidx.room.PrimaryKey
import android.os.Parcel
import android.os.Parcelable

View File

@ -1,9 +1,9 @@
package io.casey.musikcube.remote.ui.settings.model;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.OnConflictStrategy;
import android.arch.persistence.room.Query;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import java.util.List;

View File

@ -1,9 +1,9 @@
package io.casey.musikcube.remote.ui.settings.model
import android.arch.persistence.room.Database
import android.arch.persistence.room.RoomDatabase
import androidx.room.Database
import androidx.room.RoomDatabase
@Database(entities = arrayOf(Connection::class), version = 1)
@Database(entities = [Connection::class], version = 1)
abstract class ConnectionsDb : RoomDatabase() {
abstract fun connectionsDao(): ConnectionsDao
}

View File

@ -5,13 +5,13 @@ import android.content.Intent
import android.content.SharedPreferences
import android.media.AudioManager
import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v7.app.AppCompatActivity
import android.view.KeyEvent
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import com.uacf.taskrunner.Runner
import com.uacf.taskrunner.Task
import io.casey.musikcube.remote.Application

View File

@ -1,9 +1,9 @@
package io.casey.musikcube.remote.ui.shared.activity
import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.view.Menu
import android.view.MenuItem
import com.google.android.material.floatingactionbutton.FloatingActionButton
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.ui.navigation.Transition
import io.casey.musikcube.remote.ui.shared.constant.Shared

View File

@ -1,6 +1,6 @@
package io.casey.musikcube.remote.ui.shared.activity
import android.support.design.widget.FloatingActionButton
import com.google.android.material.floatingactionbutton.FloatingActionButton
interface IFabConsumer {
val fabVisible: Boolean

View File

@ -5,14 +5,6 @@ import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v4.app.DialogFragment
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.content.ContextCompat
import android.support.v4.view.MenuItemCompat
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.*
import android.text.TextUtils
import android.view.Menu
import android.view.View
@ -21,6 +13,18 @@ import android.widget.CheckBox
import android.widget.CompoundButton
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat
import androidx.core.view.MenuItemCompat
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.snackbar.Snackbar
import io.casey.musikcube.remote.Application
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.ui.navigation.Transition
@ -355,7 +359,7 @@ fun showSnackbar(view: View, text: String, bgColor: Int, fgColor: Int, buttonTex
val sbView = sb.view
val context = view.context
sbView.setBackgroundColor(ContextCompat.getColor(context, bgColor))
val tv = sbView.findViewById<TextView>(android.support.design.R.id.snackbar_text)
val tv = sbView.findViewById<TextView>(com.google.android.material.R.id.snackbar_text)
tv.setTextColor(ContextCompat.getColor(context, fgColor))
sb.show()
}

View File

@ -2,8 +2,8 @@ package io.casey.musikcube.remote.ui.shared.fragment
import android.content.Intent
import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.support.v7.app.AppCompatActivity
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.DialogFragment
import io.casey.musikcube.remote.framework.IMixin
import io.casey.musikcube.remote.framework.MixinSet
import io.casey.musikcube.remote.framework.ViewModel

View File

@ -5,14 +5,14 @@ import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.os.Handler
import android.support.v4.app.Fragment
import android.support.v4.view.ViewCompat
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.View
import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
import androidx.fragment.app.Fragment
import io.casey.musikcube.remote.Application
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.framework.IMixin

View File

@ -5,11 +5,11 @@ import android.app.Dialog
import android.content.DialogInterface
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.widget.EditText
import android.widget.PopupMenu
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import io.casey.musikcube.remote.Application
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.framework.MixinBase

View File

@ -1,6 +1,6 @@
package io.casey.musikcube.remote.ui.shared.model
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import com.simplecityapps.recyclerview_fastscroll.interfaces.OnFastScrollStateChangeListener
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
import io.casey.musikcube.remote.service.websocket.model.IDataProvider

View File

@ -4,12 +4,12 @@ import android.app.Dialog
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.RecyclerView
import android.support.v7.widget.helper.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.ItemTouchHelper
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.framework.ViewModel
import io.casey.musikcube.remote.ui.navigation.Transition

View File

@ -1,14 +1,14 @@
package io.casey.musikcube.remote.ui.tracks.adapter
import android.content.SharedPreferences
import android.support.v7.widget.RecyclerView
import android.support.v7.widget.helper.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.ItemTouchHelper
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.service.websocket.model.ITrack
import io.casey.musikcube.remote.ui.shared.extension.fallback

View File

@ -1,7 +1,7 @@
package io.casey.musikcube.remote.ui.tracks.adapter
import android.content.SharedPreferences
import android.support.v7.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View

View File

@ -3,8 +3,8 @@ package io.casey.musikcube.remote.ui.tracks.fragment
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.*
import androidx.appcompat.app.AppCompatActivity
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.service.playback.impl.remote.Metadata

View File

@ -1,38 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.design.widget.AppBarLayout
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:transitionName="toolbar_transition">
<android.support.v7.widget.Toolbar
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways|snap" />
<android.support.design.widget.TabLayout
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_primary" />
</android.support.design.widget.AppBarLayout>
</com.google.android.material.appbar.AppBarLayout>
<android.support.v4.view.ViewPager
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="middle_content_transition"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_gravity="bottom|right"
android:layout_width="wrap_content"
@ -48,4 +48,4 @@
app:fabSize="mini"
app:rippleColor="?colorAccent"/>
</android.support.design.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />

View File

@ -27,7 +27,7 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="0dp"
android:layout_height="2dp" />
@ -41,7 +41,7 @@
android:text="@string/button_play_queue"
android:transitionName="play_queue_transition"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="0dp"
android:layout_height="2dp" />
@ -60,7 +60,7 @@
android:layout_gravity="center"
android:text="@string/button_artists"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp" />
@ -73,7 +73,7 @@
android:layout_gravity="center"
android:text="@string/button_albums"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp" />
@ -86,7 +86,7 @@
android:layout_gravity="center"
android:text="@string/button_tracks"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp" />
@ -118,7 +118,7 @@
android:layout_height="wrap_content"
android:text="@string/button_prev"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp" />
@ -130,7 +130,7 @@
android:layout_height="wrap_content"
android:text="@string/button_play"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp" />
@ -197,7 +197,7 @@
android:layout_gravity="center"
android:text="@string/button_shuffle"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp" />
@ -209,7 +209,7 @@
android:layout_height="wrap_content"
android:text="@string/button_mute"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp" />

View File

@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:background="@color/theme_background" >
<android.support.design.widget.CoordinatorLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_weight="1"
android:layout_height="0dp"
android:layout_width="match_parent">
@ -31,12 +31,12 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:visibility="invisible"/>
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
style="@style/FAB"
android:id="@+id/fab"
app:layout_anchor="@id/recycler_view" />
</android.support.design.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<FrameLayout
android:id="@+id/transport_container"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_weight="1"
@ -33,9 +33,9 @@
</FrameLayout>
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
style="@style/FAB"
android:id="@+id/fab"
app:layout_anchor="@id/content_container" />
</android.support.design.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -44,7 +44,7 @@
android:layout_weight="1.0"
android:text="@string/button_revert"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp"/>

View File

@ -19,7 +19,7 @@
android:textColor="@color/theme_foreground"
android:text="@string/edit_connection_info"/>
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
@ -33,9 +33,9 @@
android:hint="@string/edit_connection_hostname"
android:inputType="textNoSuggestions" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
@ -49,9 +49,9 @@
android:hint="@string/edit_connection_port"
android:inputType="number" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
@ -65,9 +65,9 @@
android:hint="@string/edit_connection_http_port"
android:inputType="number" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
<android.support.design.widget.TextInputLayout
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
@ -81,7 +81,7 @@
android:hint="@string/edit_connection_password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
<CheckBox
android:id="@+id/ssl_checkbox"
@ -100,7 +100,7 @@
android:visibility="visible"
android:text="@string/settings_disable_cert_validation"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="0dp"
android:layout_height="16dp"/>
@ -130,7 +130,7 @@
</LinearLayout>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="0dp"
android:layout_height="16dp"/>
@ -147,7 +147,7 @@
android:layout_height="match_parent"
android:layout_marginLeft="24dp"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="0dp"
android:layout_height="16dp"/>
@ -164,7 +164,7 @@
android:layout_height="match_parent"
android:layout_marginLeft="24dp"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="0dp"
android:layout_height="16dp"/>
@ -181,7 +181,7 @@
android:layout_height="match_parent"
android:layout_marginLeft="24dp"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="0dp"
android:layout_height="16dp"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout
<com.google.android.material.appbar.AppBarLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/appbar"
@ -9,10 +9,10 @@
android:transitionName="toolbar_transition"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<android.support.v7.widget.Toolbar
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways|snap" />
</android.support.design.widget.AppBarLayout>
</com.google.android.material.appbar.AppBarLayout>

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
@ -21,7 +22,7 @@
android:layout_weight="1.0"
android:text="@string/button_prev"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp"/>
@ -33,7 +34,7 @@
android:layout_weight="1.0"
android:text="@string/button_play"/>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="2dp"
android:layout_height="0dp"/>
@ -47,7 +48,7 @@
</LinearLayout>
<android.support.v4.widget.Space
<androidx.legacy.widget.Space
android:layout_width="0dp"
android:layout_height="2dp"/>
@ -60,6 +61,15 @@
android:paddingRight="4dp"
android:transitionName="play_queue_transition">
<!--<me.zhanghai.android.materialprogressbar.MaterialProgressBar-->
<!--style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="32dp"-->
<!--android:secondaryProgress="50"-->
<!--android:progress="25"-->
<!--android:indeterminate="false"-->
<!--app:mpb_useIntrinsicPadding="false"/>-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="ifRoom"
android:title="@string/search_hint"/>
</menu>

View File

@ -1,6 +1,5 @@
org.gradle.jvmargs=-Xmx1536m
org.gradle.caching=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
org.gradle.parallel=true
android.useAndroidX=true
android.enableJetifier=true