diff --git a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt index 0d6190b..20c9c6c 100644 --- a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt +++ b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt @@ -55,6 +55,7 @@ class MainActivity : AppCompatActivity() { private val favoriteRepository = FavoritesRepository(this) private val favoritedRepository = FavoritedRepository(this) + private var menu: Menu? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -146,10 +147,18 @@ class MainActivity : AppCompatActivity() { super.onBackPressed() } + override fun onPrepareOptionsMenu(menu: Menu?): Boolean { + this.menu = menu + + return super.onPrepareOptionsMenu(menu) + } + override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.toolbar, menu) - menu?.findItem(R.id.nav_only_my_music)?.isChecked = Settings.getScope() == "me" + menu?.findItem(R.id.nav_all_music)?.isChecked = Settings.getScopes().contains("all") + menu?.findItem(R.id.nav_my_music)?.isChecked = Settings.getScopes().contains("me") + menu?.findItem(R.id.nav_followed)?.isChecked = Settings.getScopes().contains("subscribed") return true } @@ -170,15 +179,48 @@ class MainActivity : AppCompatActivity() { R.id.nav_queue -> launchDialog(QueueFragment()) R.id.nav_search -> startActivity(Intent(this, SearchActivity::class.java)) - R.id.nav_only_my_music -> { - item.isChecked = !item.isChecked + R.id.nav_all_music, R.id.nav_my_music, R.id.nav_followed -> { + menu?.let { menu -> + item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW) + item.actionView = View(this) + item.setOnActionExpandListener(object : MenuItem.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem?) = false + override fun onMenuItemActionCollapse(item: MenuItem?) = false + }) - when (item.isChecked) { - true -> PowerPreference.getDefaultFile().set("scope", "me") - false -> PowerPreference.getDefaultFile().set("scope", "all") + item.isChecked = !item.isChecked + + val scopes = Settings.getScopes().toMutableSet() + + val new = when (item.itemId) { + R.id.nav_my_music -> "me" + R.id.nav_followed -> "subscribed" + + else -> { + menu.findItem(R.id.nav_my_music).isChecked = false + menu.findItem(R.id.nav_followed).isChecked = false + + PowerPreference.getDefaultFile().set("scope", "all") + EventBus.send(Event.ListingsChanged) + + return false + } + } + + menu.findItem(R.id.nav_all_music).isChecked = false + + scopes.remove("all") + + when (item.isChecked) { + true -> scopes.add(new) + false -> scopes.remove(new) + } + + PowerPreference.getDefaultFile().set("scope", scopes.joinToString(",")) + EventBus.send(Event.ListingsChanged) + + return false } - - EventBus.send(Event.ListingsChanged) } R.id.nav_downloads -> startActivity(Intent(this, DownloadsActivity::class.java)) R.id.settings -> startActivityForResult(Intent(this, SettingsActivity::class.java), 0) diff --git a/app/src/main/java/com/github/apognu/otter/repositories/HttpUpstream.kt b/app/src/main/java/com/github/apognu/otter/repositories/HttpUpstream.kt index e36fdcf..3277dba 100644 --- a/app/src/main/java/com/github/apognu/otter/repositories/HttpUpstream.kt +++ b/app/src/main/java/com/github/apognu/otter/repositories/HttpUpstream.kt @@ -33,7 +33,7 @@ class HttpUpstream>(val behavior: Behavior, privat .buildUpon() .appendQueryParameter("page_size", AppContext.PAGE_SIZE.toString()) .appendQueryParameter("page", page.toString()) - .appendQueryParameter("scope", Settings.getScope()) + .appendQueryParameter("scope", Settings.getScopes().joinToString(",")) .build() .toString() diff --git a/app/src/main/java/com/github/apognu/otter/utils/Util.kt b/app/src/main/java/com/github/apognu/otter/utils/Util.kt index f0b8da8..f768852 100644 --- a/app/src/main/java/com/github/apognu/otter/utils/Util.kt +++ b/app/src/main/java/com/github/apognu/otter/utils/Util.kt @@ -75,5 +75,6 @@ object Settings { fun getAccessToken(): String = PowerPreference.getFileByName(AppContext.PREFS_CREDENTIALS).getString("access_token", "") fun isAnonymous() = PowerPreference.getFileByName(AppContext.PREFS_CREDENTIALS).getBoolean("anonymous", false) fun areExperimentsEnabled() = PowerPreference.getDefaultFile().getBoolean("experiments", false) - fun getScope() = PowerPreference.getDefaultFile().getString("scope", "all") + + fun getScopes() = PowerPreference.getDefaultFile().getString("scope", "all").split(",") } diff --git a/app/src/main/res/menu-land/toolbar.xml b/app/src/main/res/menu-land/toolbar.xml index 50b9c7b..8bfa844 100644 --- a/app/src/main/res/menu-land/toolbar.xml +++ b/app/src/main/res/menu-land/toolbar.xml @@ -8,11 +8,29 @@ android:title="@string/toolbar_search" app:showAsAction="ifRoom" /> - + + + + + + + + + + + - + + + + + + + + + + + %1$d piste • %2$s %1$d pistes • %2$s - Ma musique seulement + Filtres + Toute la musique + Ma musique + Contenu suivi Téléchargement de %1$d piste Téléchargement de %1$d pistes diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4970d46..52c4ded 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -114,7 +114,10 @@ %1$d track • %2$s" %1$d tracks • %2$s" - Only my music + Filters + All music + My music + Followed content Downloading %1$d track Downloading %1$d tracks diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0dac914..bf8b24a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -69,7 +69,13 @@ @android:color/white @android:color/white - @style/ThemeOverlay.AppCompat.DayNight + @style/AppTheme.PopupMenu + @style/AppTheme.PopupMenu + + +