From 6b1c018318860b33f3baee65cf26fa7bae6fc16b Mon Sep 17 00:00:00 2001 From: yattoz <12408848+yattoz@users.noreply.github.com> Date: Sat, 7 Dec 2019 22:10:52 +0100 Subject: [PATCH] removed many R/a/dio specifc code. Hid some UI that could be used later. --- app/src/main/assets/chat.html | 23 -- app/src/main/ic_launcher-web.png | Bin 22901 -> 44829 bytes .../forum_thalie/tsumugi/BaseNotification.kt | 2 +- .../tsumugi/BootBroadcastReceiver.kt | 6 - .../fr/forum_thalie/tsumugi/MainActivity.kt | 21 +- .../tsumugi/ParametersActivity.kt | 1 - .../fr/forum_thalie/tsumugi/RadioService.kt | 48 +-- .../java/fr/forum_thalie/tsumugi/Tickers.kt | 8 - .../tsumugi/playerstore/PlayerStore.kt | 21 +- .../tsumugi/preferences/CustomizeFragment.kt | 36 --- .../StreamerNotifServiceFragment.kt | 63 ---- .../ServiceNotification.kt | 41 --- .../StreamerMonitorExtensions.kt | 114 ------- .../StreamerMonitorService.kt | 123 ------- .../StreamerNotification.kt | 35 -- .../WorkerStore.kt | 46 --- .../tsumugi/ui/chat/ChatFragment.kt | 52 --- .../tsumugi/ui/chat/ChatViewModel.kt | 12 - .../tsumugi/ui/chat/WebViewChat.kt | 47 --- .../tsumugi/ui/songs/SongsFragment.kt | 54 +--- .../tsumugi/ui/songs/queuelp/QueueFragment.kt | 70 ---- .../ui/songs/request/CooldownCalculator.kt | 69 ---- .../ui/songs/request/FavoritesFragment.kt | 132 -------- .../ui/songs/request/RequestFragment.kt | 81 ----- .../ui/songs/request/RequestResponse.kt | 42 --- .../ui/songs/request/RequestSongAdapter.kt | 148 --------- .../tsumugi/ui/songs/request/Requestor.kt | 301 ------------------ .../res/drawable-anydpi-v24/lollipop_logo.xml | 13 - .../drawable-anydpi/ic_chat_processing.xml | 11 - .../drawable-anydpi/ic_open_in_browser.xml | 11 - .../res/drawable-hdpi/ic_chat_processing.png | Bin 204 -> 0 bytes .../res/drawable-hdpi/ic_open_in_browser.png | Bin 213 -> 0 bytes .../main/res/drawable-hdpi/lollipop_logo.png | Bin 402 -> 1100 bytes .../res/drawable-mdpi/ic_chat_processing.png | Bin 143 -> 0 bytes .../res/drawable-mdpi/ic_open_in_browser.png | Bin 165 -> 0 bytes .../main/res/drawable-mdpi/lollipop_logo.png | Bin 318 -> 659 bytes .../main/res/drawable-v23/launch_screen.xml | 4 +- .../res/drawable-xhdpi/ic_chat_processing.png | Bin 236 -> 0 bytes .../res/drawable-xhdpi/ic_open_in_browser.png | Bin 249 -> 0 bytes .../main/res/drawable-xhdpi/lollipop_logo.png | Bin 494 -> 1622 bytes .../drawable-xxhdpi/ic_chat_processing.png | Bin 321 -> 0 bytes .../drawable-xxhdpi/ic_open_in_browser.png | Bin 353 -> 0 bytes .../res/drawable-xxhdpi/lollipop_logo.png | Bin 698 -> 2780 bytes .../res/drawable-xxxhdpi/lollipop_logo.png | Bin 0 -> 4245 bytes app/src/main/res/drawable/actionbar_logo.jpg | Bin 13237 -> 0 bytes .../res/drawable/ic_launcher_foreground.xml | 42 +++ .../main/res/drawable/ic_radio_logo_round.xml | 18 -- app/src/main/res/drawable/ic_radiologo.xml | 18 -- .../main/res/drawable/ic_tsumugi_lineart.xml | 59 ++++ .../main/res/drawable/logo_roundsquare.png | Bin 0 -> 112077 bytes app/src/main/res/drawable/normal_logo.png | Bin 4317 -> 0 bytes .../main/res/drawable/seek_bar_progress.xml | 42 --- app/src/main/res/drawable/seek_bar_thumb.xml | 25 -- app/src/main/res/layout/activity_main.xml | 8 +- .../main/res/layout/fragment_nowplaying.xml | 22 +- app/src/main/res/menu/bottom_nav_menu.xml | 4 - app/src/main/res/menu/toolbar_menu.xml | 3 +- .../res/mipmap-anydpi-v26/ic_launcher.xml | 4 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 4 +- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2441 -> 3835 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 3123 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4250 -> 5788 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1705 -> 2507 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 1991 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2665 -> 3505 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3414 -> 5474 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 4329 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 6045 -> 8334 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 5187 -> 8727 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 7100 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 9355 -> 13613 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 7032 -> 12527 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 10060 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 13350 -> 19600 bytes .../main/res/navigation/navigation_chat.xml | 13 - .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 2 +- app/src/main/res/values/styles.xml | 4 +- .../main/res/xml/customize_preferences.xml | 27 +- app/src/main/res/xml/preferences.xml | 7 - .../streamer_notif_service_preferences.xml | 22 -- 81 files changed, 163 insertions(+), 1800 deletions(-) delete mode 100644 app/src/main/assets/chat.html delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/preferences/StreamerNotifServiceFragment.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/ServiceNotification.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerMonitorExtensions.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerMonitorService.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerNotification.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/WorkerStore.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/ChatFragment.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/ChatViewModel.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/WebViewChat.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/queuelp/QueueFragment.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/CooldownCalculator.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/FavoritesFragment.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestFragment.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestResponse.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestSongAdapter.kt delete mode 100644 app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/Requestor.kt delete mode 100644 app/src/main/res/drawable-anydpi-v24/lollipop_logo.xml delete mode 100644 app/src/main/res/drawable-anydpi/ic_chat_processing.xml delete mode 100644 app/src/main/res/drawable-anydpi/ic_open_in_browser.xml delete mode 100644 app/src/main/res/drawable-hdpi/ic_chat_processing.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_open_in_browser.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_chat_processing.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_open_in_browser.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_chat_processing.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_open_in_browser.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_chat_processing.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_open_in_browser.png create mode 100644 app/src/main/res/drawable-xxxhdpi/lollipop_logo.png delete mode 100644 app/src/main/res/drawable/actionbar_logo.jpg create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml delete mode 100644 app/src/main/res/drawable/ic_radio_logo_round.xml delete mode 100644 app/src/main/res/drawable/ic_radiologo.xml create mode 100644 app/src/main/res/drawable/ic_tsumugi_lineart.xml create mode 100644 app/src/main/res/drawable/logo_roundsquare.png delete mode 100644 app/src/main/res/drawable/normal_logo.png delete mode 100644 app/src/main/res/drawable/seek_bar_progress.xml delete mode 100644 app/src/main/res/drawable/seek_bar_thumb.xml delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png delete mode 100644 app/src/main/res/navigation/navigation_chat.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml delete mode 100644 app/src/main/res/xml/streamer_notif_service_preferences.xml diff --git a/app/src/main/assets/chat.html b/app/src/main/assets/chat.html deleted file mode 100644 index 650c9a2..0000000 --- a/app/src/main/assets/chat.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - -
- -
- - - - \ No newline at end of file diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png index 2c5335a78e7913d5d245f4cd3383b2b42b34a045..606603c4159c1fb244bbb3c569c1aea03e6ba500 100644 GIT binary patch literal 44829 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

qdPz6!=m1>;1*~%u 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 diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/BaseNotification.kt b/app/src/main/java/fr/forum_thalie/tsumugi/BaseNotification.kt index 1b18345..c236c7f 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/BaseNotification.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/BaseNotification.kt @@ -71,7 +71,7 @@ abstract class BaseNotification(private val notificationChannelId: String, builder.setSmallIcon(R.drawable.lollipop_logo) builder.color = -0xf58b01 // same color as Accent. Can't use c.getColor since it's API23+ } else { - builder.setSmallIcon(R.drawable.normal_logo) + builder.setSmallIcon(R.drawable.logo_roundsquare) } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/BootBroadcastReceiver.kt b/app/src/main/java/fr/forum_thalie/tsumugi/BootBroadcastReceiver.kt index 118b168..e8c0c79 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/BootBroadcastReceiver.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/BootBroadcastReceiver.kt @@ -8,8 +8,6 @@ import android.util.Log import androidx.preference.PreferenceManager import fr.forum_thalie.tsumugi.alarm.RadioAlarm import fr.forum_thalie.tsumugi.playerstore.PlayerStore -import fr.forum_thalie.tsumugi.streamerNotificationService.WorkerStore -import fr.forum_thalie.tsumugi.streamerNotificationService.startStreamerMonitor class BootBroadcastReceiver : BroadcastReceiver(){ @@ -19,8 +17,6 @@ class BootBroadcastReceiver : BroadcastReceiver(){ preferenceStore = PreferenceManager.getDefaultSharedPreferences(context) if (arg1.action == Intent.ACTION_BOOT_COMPLETED) { - WorkerStore.instance.init(context) - startStreamerMonitor(context) // will actually start it only if enabled in settings RadioAlarm.instance.setNextAlarm(context) // schedule next alarm } @@ -29,8 +25,6 @@ class BootBroadcastReceiver : BroadcastReceiver(){ RadioAlarm.instance.setNextAlarm(context) // schedule next alarm if (PlayerStore.instance.streamerName.value.isNullOrBlank()) PlayerStore.instance.initPicture(context) - if (!PlayerStore.instance.isInitialized) - PlayerStore.instance.initApi() val i = Intent(context, RadioService::class.java) i.putExtra("action", Actions.PLAY_OR_FALLBACK.name) diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/MainActivity.kt b/app/src/main/java/fr/forum_thalie/tsumugi/MainActivity.kt index 9e6fc8f..acf7cd6 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/MainActivity.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/MainActivity.kt @@ -15,12 +15,8 @@ import fr.forum_thalie.tsumugi.playerstore.PlayerStore import java.util.Timer import android.view.MenuItem -import androidx.preference.PreferenceManager import com.google.android.material.snackbar.Snackbar import fr.forum_thalie.tsumugi.alarm.RadioAlarm -import fr.forum_thalie.tsumugi.streamerNotificationService.WorkerStore -import fr.forum_thalie.tsumugi.streamerNotificationService.startStreamerMonitor -import fr.forum_thalie.tsumugi.ui.songs.request.Requestor /* Log to file import @@ -39,11 +35,11 @@ class MainActivity : BaseActivity() { * Called on first creation and when restoring state. */ private fun setupBottomNavigationBar() { - val bottomNavigationView = findViewById(R.id.bottom_nav) + val bottomNavigationView : BottomNavigationView = findViewById(R.id.bottom_nav) //val navGraphIds = listOf(R.navigation.home, R.navigation.list, R.navigation.form) val navGraphIds = listOf(R.navigation.navigation_nowplaying, R.navigation.navigation_songs, - R.navigation.navigation_news, R.navigation.navigation_chat) + R.navigation.navigation_news) // Setup the bottom navigation view with a list of navigation graphs val controller = bottomNavigationView.setupWithNavController( @@ -77,15 +73,15 @@ class MainActivity : BaseActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { // Handle item selection return when (item.itemId) { + /* R.id.action_refresh -> { PlayerStore.instance.queue.clear() PlayerStore.instance.lp.clear() - PlayerStore.instance.initApi() - Requestor.instance.initFavorites() val s = Snackbar.make(findViewById(R.id.nav_host_container), "Refreshing data..." as CharSequence, Snackbar.LENGTH_LONG) s.show() true } + */ R.id.action_settings -> { val i = Intent(this, ParametersActivity::class.java) startActivity(i) @@ -118,10 +114,6 @@ class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - - WorkerStore.instance.init(this) - startStreamerMonitor(this) // this checks the preferenceStore before actually starting a service, don't worry. - RadioAlarm.instance.cancelAlarm(c = this) RadioAlarm.instance.setNextAlarm(c = this) // this checks the preferenceStore before actually setting an alarm, don't worry. @@ -132,8 +124,6 @@ class MainActivity : BaseActivity() { colorRedList = (ResourcesCompat.getColorStateList(resources, R.color.button_red, null)) colorGreenListCompat = (ResourcesCompat.getColorStateList(resources, R.color.button_green_compat, null)) - PlayerStore.instance.initApi() // the service will call the initApi on defining the streamerName Observer too, but it's better to initialize the API as soon as the user opens the activity. - // Post-UI Launch if (PlayerStore.instance.isInitialized) { @@ -149,9 +139,6 @@ class MainActivity : BaseActivity() { // initialize some API data PlayerStore.instance.initPicture(this) PlayerStore.instance.streamerName.value = "" // initializing the streamer name will trigger an initApi from the observer in the Service. - - // initialize the favorites - Requestor.instance.initFavorites() } if (!isTimerStarted) diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ParametersActivity.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ParametersActivity.kt index 4bcef87..d8294da 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ParametersActivity.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/ParametersActivity.kt @@ -29,7 +29,6 @@ class ParametersActivity : BaseActivity() { ActionOpenParam.ALARM.name -> AlarmFragment() ActionOpenParam.SLEEP.name -> SleepFragment() ActionOpenParam.CUSTOMIZE.name -> CustomizeFragment() - ActionOpenParam.STREAMER_NOTIFICATION_SERVICE.name -> StreamerNotifServiceFragment() else -> MainPreferenceFragment() } diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/RadioService.kt b/app/src/main/java/fr/forum_thalie/tsumugi/RadioService.kt index 6ed4eb5..0fada1d 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/RadioService.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/RadioService.kt @@ -107,29 +107,6 @@ class RadioService : MediaBrowserServiceCompat() { // ################### OBSERVERS #################### // ################################################## - private val titleObserver: Observer = Observer { - if (PlayerStore.instance.playbackState.value == PlaybackStateCompat.STATE_PLAYING) - { - Log.d(tag, radioTag + "SONG CHANGED AND PLAYING") - // we activate latency compensation only if it's been at least 2 songs... - when { - PlayerStore.instance.isStreamDown -> { - // if we reach here, it means that the observer has been called by a new song and that the stream was down previously. - // so the stream is now back to normal. - PlayerStore.instance.isStreamDown = false - PlayerStore.instance.initApi() - } - PlayerStore.instance.currentSong.title.value == getString(R.string.ed) -> { - PlayerStore.instance.isStreamDown = true - } - else -> { - PlayerStore.instance.fetchApi(numberOfSongs >= 2) - } - } - } - nowPlayingNotification.update(this) - } - private val volumeObserver: Observer = Observer { setVolume(it) } @@ -145,20 +122,14 @@ class RadioService : MediaBrowserServiceCompat() { stopPlaying() } - private val startTimeObserver = Observer { - // We're listening to startTime to determine if we have to update Queue and Lp. - // this is because startTime is set by the API and never by the ICY, so both cases are covered (playing and stopped) - // should be OK even when a new streamer comes in. - if (it != PlayerStore.instance.currentSongBackup.startTime.value) // we have a new song + private val titleObserver = Observer { + // We're checking if a new song arrives. If so, we put the currentSong in Lp and update the backup. + if (PlayerStore.instance.currentSong != PlayerStore.instance.currentSongBackup + && it != noConnectionValue) { PlayerStore.instance.updateLp() - PlayerStore.instance.updateQueue() } - } - - private val streamerObserver = Observer { - PlayerStore.instance.initApi() - nowPlayingNotification.update(this) // should update the streamer icon + nowPlayingNotification.update(this) } private val streamerPictureObserver = Observer { @@ -224,9 +195,7 @@ class RadioService : MediaBrowserServiceCompat() { nowPlayingNotification.create(this, mediaSession) - PlayerStore.instance.streamerName.observeForever(streamerObserver) PlayerStore.instance.currentSong.title.observeForever(titleObserver) - PlayerStore.instance.currentSong.startTime.observeForever(startTimeObserver) PlayerStore.instance.volume.observeForever(volumeObserver) PlayerStore.instance.isPlaying.observeForever(isPlayingObserver) PlayerStore.instance.isMuted.observeForever(isMutedObserver) @@ -234,12 +203,6 @@ class RadioService : MediaBrowserServiceCompat() { startForeground(radioServiceId, nowPlayingNotification.notification) - // start ticker for when the player is stopped - val periodString = PreferenceManager.getDefaultSharedPreferences(this).getString("fetchPeriod", "10") ?: "10" - val period: Long = Integer.parseInt(periodString).toLong() - if (period > 0) - apiTicker.schedule(ApiFetchTick(), 0, period * 1000) - PlayerStore.instance.isServiceStarted.value = true Log.d(tag, radioTag + "created") } @@ -303,7 +266,6 @@ class RadioService : MediaBrowserServiceCompat() { player.release() unregisterReceiver(receiver) PlayerStore.instance.currentSong.title.removeObserver(titleObserver) - PlayerStore.instance.currentSong.startTime.removeObserver(startTimeObserver) PlayerStore.instance.volume.removeObserver(volumeObserver) PlayerStore.instance.isPlaying.removeObserver(isPlayingObserver) PlayerStore.instance.isMuted.removeObserver(isMutedObserver) diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/Tickers.kt b/app/src/main/java/fr/forum_thalie/tsumugi/Tickers.kt index a99ae5a..40049a5 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/Tickers.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/Tickers.kt @@ -11,11 +11,3 @@ class Tick : TimerTask() { } } -class ApiFetchTick : TimerTask() { - override fun run() { - if (PlayerStore.instance.playbackState.value == PlaybackStateCompat.STATE_STOPPED) - { - PlayerStore.instance.fetchApi() - } - } -} diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/playerstore/PlayerStore.kt b/app/src/main/java/fr/forum_thalie/tsumugi/playerstore/PlayerStore.kt index 4cf734e..8df0546 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/playerstore/PlayerStore.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/playerstore/PlayerStore.kt @@ -31,10 +31,8 @@ class PlayerStore { val isLpUpdated: MutableLiveData = MutableLiveData() val isMuted : MutableLiveData = MutableLiveData() val listenersCount: MutableLiveData = MutableLiveData() - private val urlToScrape = "https://r-a-d.io/api" var latencyCompensator : Long = 0 var isInitialized: Boolean = false - var isStreamDown: Boolean = false init { playbackState.value = PlaybackStateCompat.STATE_STOPPED @@ -47,6 +45,7 @@ class PlayerStore { isLpUpdated.value = false isMuted.value = false currentSong.title.value = noConnectionValue + currentSongBackup.title.value = noConnectionValue listenersCount.value = 0 } @@ -54,6 +53,7 @@ class PlayerStore { // ################# API FUNCTIONS ################## // ################################################## + /* private fun updateApi(resMain: JSONObject, isCompensatingLatency : Boolean = false) { // If we're not in PLAYING state, update title / artist metadata. If we're playing, the ICY will take care of that. if (playbackState.value != PlaybackStateCompat.STATE_PLAYING || currentSong.title.value.isNullOrEmpty() @@ -154,24 +154,26 @@ class PlayerStore { } Async(scrape, post) } + */ // ################################################## // ############## QUEUE / LP FUNCTIONS ############## // ################################################## fun updateLp() { - // note : lp must never be empty. There should always be some songs "last played". - // if not, then the function has been called before initialization. No need to do anything. - if (lp.isNotEmpty()){ + // note : lp is empty at initialization. This check was needed when we used the R/a/dio API. + //if (lp.isNotEmpty()){ val n = Song() n.copy(currentSongBackup) - lp.add(0, n) + if (n.title.value != noConnectionValue) + lp.add(0, n) currentSongBackup.copy(currentSong) isLpUpdated.value = true Log.d(tag, playerStoreTag + lp.toString()) - } + //} } + /* fun updateQueue() { if (queue.isNotEmpty()) { queue.remove(queue.first()) @@ -257,11 +259,13 @@ class PlayerStore { song.type.value = songJSON.getInt("type") return song } + */ // ################################################## // ############## PICTURE FUNCTIONS ################# // ################################################## + /* private fun fetchPicture(fileUrl: String) { val scrape: (Any?) -> Bitmap? = { @@ -287,10 +291,11 @@ class PlayerStore { } Async(scrape, post) } + */ fun initPicture(c: Context) { streamerPicture.value = BitmapFactory.decodeResource(c.resources, - R.drawable.actionbar_logo + R.drawable.logo_roundsquare ) } diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/preferences/CustomizeFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/preferences/CustomizeFragment.kt index f8d8efb..a41b394 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/preferences/CustomizeFragment.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/preferences/CustomizeFragment.kt @@ -8,19 +8,11 @@ import androidx.appcompat.app.AlertDialog import androidx.preference.* import fr.forum_thalie.tsumugi.R import fr.forum_thalie.tsumugi.preferenceStore -import fr.forum_thalie.tsumugi.ui.songs.request.Requestor class CustomizeFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.customize_preferences, rootKey) - val userNamePref = preferenceScreen.findPreference("userName") - userNamePref?.summaryProvider = EditTextPreference.SimpleSummaryProvider.getInstance() - userNamePref?.setOnPreferenceChangeListener { _, newValue -> - val name = newValue as String - Requestor.instance.initFavorites(name) // need to be as parameter cause the callback is called BEFORE PARAMETER SET - true - } val snackbarPersistent = preferenceScreen.findPreference("snackbarPersistent") snackbarPersistent!!.summary = if (preferenceStore.getBoolean("snackbarPersistent", true)) @@ -48,33 +40,5 @@ class CustomizeFragment : PreferenceFragmentCompat() { true } - val helpFavorites = preferenceScreen.findPreference("helpFavorites") - helpFavorites?.setOnPreferenceClickListener { _ -> - val url = getString(R.string.github_url_wiki_irc_for_favorites) - val i = Intent(Intent.ACTION_VIEW) - i.data = Uri.parse(url) - startActivity(i) - true - } - - val fetchPeriod = preferenceScreen.findPreference("fetchPeriod") - fetchPeriod?.summaryProvider = ListPreference.SimpleSummaryProvider.getInstance() - fetchPeriod?.setOnPreferenceChangeListener { _, newValue -> - val builder1 = AlertDialog.Builder(context!!) - if (Integer.parseInt(newValue as String) == 0) - builder1.setMessage(R.string.fetch_disabled_restart_the_app) - else - builder1.setMessage(R.string.restart_the_app) - builder1.setCancelable(true) - - builder1.setPositiveButton("Close" ) { dialog, _ -> - dialog.cancel() - } - - val alert11 = builder1.create() - alert11.show() - true - } - } } \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/preferences/StreamerNotifServiceFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/preferences/StreamerNotifServiceFragment.kt deleted file mode 100644 index 0383ee1..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/preferences/StreamerNotifServiceFragment.kt +++ /dev/null @@ -1,63 +0,0 @@ -package fr.forum_thalie.tsumugi.preferences - -import android.os.Bundle -import androidx.appcompat.app.AlertDialog -import androidx.preference.* -import fr.forum_thalie.tsumugi.R -import fr.forum_thalie.tsumugi.preferenceStore -import fr.forum_thalie.tsumugi.streamerNotificationService.WorkerStore -import fr.forum_thalie.tsumugi.streamerNotificationService.startStreamerMonitor -import fr.forum_thalie.tsumugi.streamerNotificationService.stopStreamerMonitor - -class StreamerNotifServiceFragment : PreferenceFragmentCompat() { - override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - setPreferencesFromResource(R.xml.streamer_notif_service_preferences, rootKey) - - - val streamerPeriod = preferenceScreen.findPreference("streamerMonitorPeriodPref") - - val streamerNotification = preferenceScreen.findPreference("newStreamerNotification") - streamerNotification?.setOnPreferenceChangeListener { _, newValue -> - if ((newValue as Boolean)) { - val builder1 = AlertDialog.Builder(context!!) - builder1.setMessage(R.string.warningStreamerNotif) - builder1.setCancelable(false) - builder1.setPositiveButton( - "Yes" - ) { dialog, _ -> - startStreamerMonitor(context!!, force = true) // force enabled because the preference value is not yet set when running this callback. - streamerPeriod?.isEnabled = true - dialog.cancel() - } - - builder1.setNegativeButton( - "No" - ) { dialog, _ -> - - stopStreamerMonitor(context!!) - (streamerNotification as SwitchPreferenceCompat).isChecked = false - dialog.cancel() - } - - val alert11 = builder1.create() - alert11.show() - } - else { - stopStreamerMonitor(context!!) - streamerPeriod?.isEnabled = false - WorkerStore.instance.isServiceStarted = false - } - true - } - - streamerPeriod?.summaryProvider = ListPreference.SimpleSummaryProvider.getInstance() - streamerPeriod?.isEnabled = preferenceStore.getBoolean("newStreamerNotification", true) - streamerPeriod?.setOnPreferenceChangeListener { _, newValue -> - WorkerStore.instance.tickerPeriod = (Integer.parseInt(newValue as String)).toLong() * 60 - // this should be sufficient, the next alarm schedule should take the new tickerPeriod. - true - } - - - } -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/ServiceNotification.kt b/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/ServiceNotification.kt deleted file mode 100644 index bd203aa..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/ServiceNotification.kt +++ /dev/null @@ -1,41 +0,0 @@ -package fr.forum_thalie.tsumugi.streamerNotificationService - -import android.content.Context -import fr.forum_thalie.tsumugi.BaseNotification -import java.util.* - -class ServiceNotification( - notificationChannelId: String, - notificationChannel : Int, - notificationId: Int, - notificationImportance: Int - -) : BaseNotification - ( - notificationChannelId, - notificationChannel, - notificationId, - notificationImportance -){ - - override fun create(c: Context) - { - super.create(c) - update() - } - - fun update() - { - val date = Date() // given date - val calendar = Calendar.getInstance() // creates a new calendar instance - calendar.time = date // assigns calendar to given date - val hours = calendar.get(Calendar.HOUR_OF_DAY) // gets hour in 24h format - //val hours_american = calendar.get(Calendar.HOUR) // gets hour in 12h format - val minutes = calendar.get(Calendar.MINUTE) - val seconds = calendar.get(Calendar.SECOND) - - builder.setContentTitle("Never miss a stream! Current: ${WorkerStore.instance.streamerName.value}") - builder.setContentText("Last update: ${hours}:${minutes}:${seconds}") - notification = builder.build() - } -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerMonitorExtensions.kt b/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerMonitorExtensions.kt deleted file mode 100644 index d3cb66c..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerMonitorExtensions.kt +++ /dev/null @@ -1,114 +0,0 @@ -package fr.forum_thalie.tsumugi.streamerNotificationService - -import android.app.AlarmManager -import android.app.PendingIntent -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -import android.os.Build -import android.os.SystemClock -import android.util.Log -import androidx.core.app.NotificationCompat -import androidx.preference.PreferenceManager -import fr.forum_thalie.tsumugi.* -import fr.forum_thalie.tsumugi.alarm.RadioAlarm -import fr.forum_thalie.tsumugi.playerstore.PlayerStore -import org.json.JSONObject -import java.net.URL - -fun startNextAlarmStreamer(c: Context){ - // the notification works with an alarm re-scheduled at fixed rate. - // if the service stopped, the alarm is not re-scheduled. - if (WorkerStore.instance.isServiceStarted) - { - val alarmIntent = Intent(c, StreamerMonitorService::class.java).let { intent -> - intent.putExtra("action", Actions.NOTIFY.name) - PendingIntent.getService(c, 0, intent, 0) - } - - val alarmMgr = c.getSystemService(Context.ALARM_SERVICE) as AlarmManager - when { - Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> alarmMgr.setExactAndAllowWhileIdle( - AlarmManager.ELAPSED_REALTIME_WAKEUP, - SystemClock.elapsedRealtime() + WorkerStore.instance.tickerPeriod * 1000, - alarmIntent - ) - Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT -> alarmMgr.setExact( - AlarmManager.ELAPSED_REALTIME_WAKEUP, - SystemClock.elapsedRealtime() + WorkerStore.instance.tickerPeriod * 1000, - alarmIntent - ) - else -> alarmMgr.set( - AlarmManager.ELAPSED_REALTIME_WAKEUP, - SystemClock.elapsedRealtime() + WorkerStore.instance.tickerPeriod * 1000, - alarmIntent - ) - } - } else { - Log.d(tag, "alarm called while service is dead - skipped.") - } -} - -fun stopStreamerMonitor(context: Context) -{ - val intent = Intent(context, StreamerMonitorService::class.java) - intent.putExtra("action", Actions.KILL.name) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - context.startService(intent) - } else { - context.startService(intent) - } - - Log.i(tag, "Service stopped") -} - -fun startStreamerMonitor(context: Context, force: Boolean = false) -{ - if (!force) - { - val isNotifyingForNewStreamer = PreferenceManager.getDefaultSharedPreferences(context).getBoolean("newStreamerNotification", false) - if (!isNotifyingForNewStreamer) - return - } - - val intent = Intent(context, StreamerMonitorService::class.java) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - context.startForegroundService(intent) - } else { - context.startService(intent) - } - - Log.i(tag, "Service started on boot") -} - -fun fetchStreamer(applicationContext: Context) { - val urlToScrape = "https://r-a-d.io/api" - val scrape : (Any?) -> String = - { - URL(urlToScrape).readText() - } - val post: (parameter: Any?) -> Unit = { - val result = JSONObject(it as String) - if (!result.isNull("main")) - { - val name = result.getJSONObject("main").getJSONObject("dj").getString("djname") - WorkerStore.instance.streamerName.value = name - } - } - - // notify - val t = ServiceNotification( - notificationChannelId = applicationContext.getString(R.string.streamerServiceChannelId), - notificationChannel = R.string.streamerServiceChannel, - notificationId = 2, - notificationImportance = NotificationCompat.PRIORITY_LOW - ) - t.create(applicationContext) - t.show() - - try{ - Async(scrape, post) - Log.d(tag, "enqueue next work in ${WorkerStore.instance.tickerPeriod} seconds") - } catch (e: Exception) { - } -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerMonitorService.kt b/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerMonitorService.kt deleted file mode 100644 index fae27ae..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerMonitorService.kt +++ /dev/null @@ -1,123 +0,0 @@ -package fr.forum_thalie.tsumugi.streamerNotificationService - - -import android.app.Service -import android.content.Intent -import android.os.Build -import android.os.IBinder -import android.util.Log -import androidx.core.app.NotificationCompat -import androidx.lifecycle.Observer -import androidx.preference.PreferenceManager -import fr.forum_thalie.tsumugi.Actions -import fr.forum_thalie.tsumugi.R -import fr.forum_thalie.tsumugi.tag -import java.util.* - -class StreamerMonitorService : Service() { - override fun onBind(intent: Intent): IBinder? { - return null // no binding allowed nor needed - } - private val streamerNameObserver: Observer = Observer { - val previousStreamer: String - if (PreferenceManager.getDefaultSharedPreferences(this).contains("streamerName")) - { - previousStreamer = PreferenceManager.getDefaultSharedPreferences(this).getString("streamerName", "") ?: "" - /* 3 conditions: - - the streamer changed from previously - - there is a previous non-empty streamer (at least second time running it) - - the current streamer is non-empty (this can happen at Activity start where init() is called) - */ - if (previousStreamer != it && previousStreamer != "" && it != "") - { - // notify - val newStreamer = StreamerNotification( - notificationChannelId = this.getString(R.string.streamerNotificationChannelId), - notificationChannel = R.string.streamerNotificationChannel, - notificationId = 3, - notificationImportance = NotificationCompat.PRIORITY_DEFAULT - ) - newStreamer.create(this) - newStreamer.show() - } - } - - with(PreferenceManager.getDefaultSharedPreferences(this).edit()){ - putString("streamerName", it) - commit() - } - } - - override fun onCreate() { - super.onCreate() - val streamerMonitorNotification = ServiceNotification( - notificationChannelId = this.getString(R.string.streamerServiceChannelId), - notificationChannel = R.string.streamerServiceChannel, - notificationId = 2, - notificationImportance = NotificationCompat.PRIORITY_LOW - ) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - { - streamerMonitorNotification.create(this) - streamerMonitorNotification.update() - streamerMonitorNotification.show() - startForeground(2, streamerMonitorNotification.notification) - } - - WorkerStore.instance.tickerPeriod = 60 * - (if (PreferenceManager.getDefaultSharedPreferences(this).contains("streamerMonitorPeriodPref")) - Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(this).getString("streamerMonitorPeriodPref", "15")!!).toLong() - else - 15) - Log.d(tag, "tickerPeriod = ${WorkerStore.instance.tickerPeriod}") - - with(PreferenceManager.getDefaultSharedPreferences(this).edit()){ - remove("streamerName") - commit() // I commit on main thread to be sure it's been updated before continuing. - } - WorkerStore.instance.streamerName.observeForever(streamerNameObserver) - WorkerStore.instance.isServiceStarted = true - startNextAlarmStreamer(this) - Log.d(tag, "streamerMonitor created") - } - - override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { - val isNotifyingForNewStreamer = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("newStreamerNotification", false) - - // it's probably redundant but it shouldn't hurt - if (!isNotifyingForNewStreamer || !WorkerStore.instance.isServiceStarted) - { - stopForeground(true) - stopSelf() - return START_NOT_STICKY - } - when (intent?.getStringExtra("action")) { - Actions.NOTIFY.name -> { - val date = Date() // given date - val calendar = Calendar.getInstance() // creates a new calendar instance - calendar.time = date // assigns calendar to given date - val hours = calendar.get(Calendar.HOUR_OF_DAY) // gets hour in 24h format - //val hours_american = calendar.get(Calendar.HOUR) // gets hour in 12h format - val minutes = calendar.get(Calendar.MINUTE) // gets month number, NOTE this is zero based! - - Log.d(tag, "Fetched streamer name at ${hours}:${if (minutes < 10) "0" else ""}${minutes}") - fetchStreamer(this) - startNextAlarmStreamer(this) // schedule next alarm - return START_STICKY - } - Actions.KILL.name -> { - stopForeground(true) - stopSelf() - return START_NOT_STICKY - } - } - return START_STICKY - //super.onStartCommand(intent, flags, startId) - } - - override fun onDestroy() { - WorkerStore.instance.streamerName.removeObserver(streamerNameObserver) - WorkerStore.instance.isServiceStarted = false - super.onDestroy() - } -} diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerNotification.kt b/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerNotification.kt deleted file mode 100644 index f40c028..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/StreamerNotification.kt +++ /dev/null @@ -1,35 +0,0 @@ -package fr.forum_thalie.tsumugi.streamerNotificationService - -import android.content.Context -import fr.forum_thalie.tsumugi.BaseNotification -import java.util.* - -class StreamerNotification( - notificationChannelId: String, - notificationChannel : Int, - notificationId: Int, - notificationImportance: Int - -) : BaseNotification - ( - notificationChannelId, - notificationChannel, - notificationId, - notificationImportance -){ - override fun create(c: Context) { - super.create(c) - val date = Date() // given date - val calendar = Calendar.getInstance() // creates a new calendar instance - calendar.time = date // assigns calendar to given date - val hours = calendar.get(Calendar.HOUR_OF_DAY) // gets hour in 24h format - //val hours_american = calendar.get(Calendar.HOUR) // gets hour in 12h format - val minutes = calendar.get(Calendar.MINUTE) // gets month number, NOTE this is zero based! - - builder.setContentTitle("${WorkerStore.instance.streamerName.value} started streaming!") - builder.setContentText("Started at ${hours}:${if (minutes < 10) "0" else ""}${minutes}") - builder.setAutoCancel(true) - super.show() - } - -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/WorkerStore.kt b/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/WorkerStore.kt deleted file mode 100644 index b20b50d..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/streamerNotificationService/WorkerStore.kt +++ /dev/null @@ -1,46 +0,0 @@ -package fr.forum_thalie.tsumugi.streamerNotificationService - -import android.content.Context -import android.util.Log -import androidx.core.app.NotificationCompat -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.Observer -import androidx.preference.PreferenceManager -import fr.forum_thalie.tsumugi.R -import fr.forum_thalie.tsumugi.tag - -class WorkerStore { - companion object { - val instance = WorkerStore() - } - - val streamerName = MutableLiveData() - var isServiceStarted : Boolean = false - var tickerPeriod : Long = 45 // seconds - - init { - tickerPeriod = 45 - streamerName.value = "" - isServiceStarted = false - } - - fun init(c: Context) - { - tickerPeriod = 45 - streamerName.value = "" - val tickerPeriod = 60 * - (if (PreferenceManager.getDefaultSharedPreferences(c).contains("streamerMonitorPeriodPref")) - Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(c).getString("streamerMonitorPeriodPref", "15")!!).toLong() - else - 15 - ) - instance.tickerPeriod = tickerPeriod - Log.d(tag, "tickerPeriod = $tickerPeriod") - - with(PreferenceManager.getDefaultSharedPreferences(c).edit()){ - remove("streamerName") - commit() // I commit on main thread to be sure it's been updated before continuing. - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/ChatFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/ChatFragment.kt deleted file mode 100644 index 89718b1..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/ChatFragment.kt +++ /dev/null @@ -1,52 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.chat - -import android.os.Bundle -import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.view.WindowManager -import android.webkit.WebView -import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProviders -import fr.forum_thalie.tsumugi.R - - -class ChatFragment : Fragment() { - - private lateinit var chatViewModel: ChatViewModel - - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - activity?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - - chatViewModel = - ViewModelProviders.of(this).get(ChatViewModel::class.java) - - if (!chatViewModel.isChatLoaded) - { - - try { - chatViewModel.root = inflater.inflate(R.layout.fragment_chat, container, false) - chatViewModel.webView = chatViewModel.root.findViewById(R.id.chat_webview) - chatViewModel.webViewChat = WebViewChat(chatViewModel.webView as WebView) - chatViewModel.webViewChat!!.start() - } catch (e: Exception) { - chatViewModel.root = inflater.inflate(R.layout.fragment_error_chat, container, false) - } - - chatViewModel.isChatLoaded = true - Log.d(tag, "webview created") - } else { - Log.d(tag, "webview already created!?") - } - - return chatViewModel.root - } - - -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/ChatViewModel.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/ChatViewModel.kt deleted file mode 100644 index 0a4a1aa..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/ChatViewModel.kt +++ /dev/null @@ -1,12 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.chat - -import android.view.View -import android.webkit.WebView -import androidx.lifecycle.ViewModel - -class ChatViewModel : ViewModel() { - lateinit var root: View - var webView: WebView? = null - var isChatLoaded = false - var webViewChat: WebViewChat? = null -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/WebViewChat.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/WebViewChat.kt deleted file mode 100644 index 580c617..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/chat/WebViewChat.kt +++ /dev/null @@ -1,47 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.chat - -import android.annotation.SuppressLint -import android.content.Intent -import android.net.Uri -import android.webkit.WebChromeClient -import android.webkit.WebView - -class WebViewChat(private val webView: WebView) { - - @SuppressLint("SetJavaScriptEnabled") - fun start() { - - val webSetting = this.webView.settings - webSetting.javaScriptEnabled = true - webSetting.setSupportZoom(false) - - /* TODO: in the future, it could be nice to have a parameters screen where you can: - - Set the text zoom - - Set your username (to not type it every time, would it be possible?) - - Hide the chat? - - do more? */ - webSetting.textZoom = 90 - - webSetting.setSupportMultipleWindows(true) - // needs to open target="_blank" links as KiwiIRC links have this attribute. - // shamelessly ripped off https://stackoverflow.com/questions/18187714/android-open-target-blank-links-in-webview-with-external-browser - this.webView.webChromeClient = object : WebChromeClient() { - override fun onCreateWindow( - view: WebView, - dialog: Boolean, - userGesture: Boolean, - resultMsg: android.os.Message - ): Boolean { - val result = view.hitTestResult - val data = result.extra - val context = view.context - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(data)) - context.startActivity(browserIntent) - return false - } - } - - webView.loadUrl("file:///android_asset/chat.html") - } - - } diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/SongsFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/SongsFragment.kt index 1e68823..2ebc21d 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/SongsFragment.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/SongsFragment.kt @@ -5,62 +5,19 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentPagerAdapter -import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import androidx.viewpager.widget.ViewPager -import com.google.android.material.snackbar.BaseTransientBottomBar -import com.google.android.material.snackbar.Snackbar import com.google.android.material.tabs.TabLayout import fr.forum_thalie.tsumugi.R -import fr.forum_thalie.tsumugi.preferenceStore import fr.forum_thalie.tsumugi.ui.songs.queuelp.LastPlayedFragment -import fr.forum_thalie.tsumugi.ui.songs.queuelp.QueueFragment -import fr.forum_thalie.tsumugi.ui.songs.request.FavoritesFragment -import fr.forum_thalie.tsumugi.ui.songs.request.RequestFragment -import fr.forum_thalie.tsumugi.ui.songs.request.Requestor class SongsFragment : Fragment() { private lateinit var adapter : SongsPagerAdapter - private lateinit var snackBar : Snackbar private lateinit var root: View private lateinit var viewPager: ViewPager - - private val snackBarTextObserver: Observer = Observer { - if (Requestor.instance.snackBarText.value != "") - { - val snackBarLength = if (preferenceStore.getBoolean("snackbarPersistent", true)) - Snackbar.LENGTH_INDEFINITE - else Snackbar.LENGTH_LONG - snackBar = Snackbar.make(viewPager, "", snackBarLength) - - if (snackBarLength == Snackbar.LENGTH_INDEFINITE) - snackBar.setAction("OK") { - snackBar.dismiss() - } - - snackBar.behavior = BaseTransientBottomBar.Behavior().apply { - setSwipeDirection(BaseTransientBottomBar.Behavior.SWIPE_DIRECTION_ANY) - } - - val snackBarView = snackBar.view - val textView = - snackBarView.findViewById(com.google.android.material.R.id.snackbar_text) as TextView - if (Requestor.instance.addRequestMeta != "") - textView.maxLines = 4 - else - textView.maxLines = 2 - snackBar.setText((it as CharSequence)) - snackBar.show() - Requestor.instance.snackBarText.value = "" // resetting afterwards to avoid re-triggering it when we enter again the fragment - Requestor.instance.addRequestMeta = "" - } - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -71,9 +28,8 @@ class SongsFragment : Fragment() { viewPager = root.findViewById(R.id.tabPager) adapter = SongsPagerAdapter(childFragmentManager, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) adapter.addFragment(LastPlayedFragment.newInstance(), "last played") - adapter.addFragment(QueueFragment.newInstance(), "queue") - adapter.addFragment(RequestFragment.newInstance(), "request") - adapter.addFragment(FavoritesFragment.newInstance(), "Favorites") + + //adapter.addFragment(QueueFragment.newInstance(), "queue") viewPager.adapter = adapter @@ -81,14 +37,8 @@ class SongsFragment : Fragment() { tabLayout.setupWithViewPager(viewPager) Log.d(tag, "SongFragment view created") - Requestor.instance.snackBarText.observeForever(snackBarTextObserver) return root } - override fun onDestroyView() { - Requestor.instance.snackBarText.removeObserver(snackBarTextObserver) - super.onDestroyView() - } - } \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/queuelp/QueueFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/queuelp/QueueFragment.kt deleted file mode 100644 index 72a7b7f..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/queuelp/QueueFragment.kt +++ /dev/null @@ -1,70 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.songs.queuelp - -import android.os.Bundle -import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import fr.forum_thalie.tsumugi.R -import fr.forum_thalie.tsumugi.playerstore.PlayerStore -import fr.forum_thalie.tsumugi.playerstore.Song - -class QueueFragment : Fragment(){ - private val lastPlayedFragmentTag = this::class.java.name - - private lateinit var recyclerView: RecyclerView - private lateinit var viewAdapter: RecyclerView.Adapter<*> - private lateinit var viewManager: RecyclerView.LayoutManager - - - private val queueObserver = Observer { - Log.d(tag, lastPlayedFragmentTag + "queue changed") - viewAdapter.notifyDataSetChanged() - } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - val root = inflater.inflate(R.layout.fragment_last_played, container, false) - - viewManager = LinearLayoutManager(context) - viewAdapter = SongAdaptater( - if (PlayerStore.instance.queue.isEmpty()) - ArrayList(listOf((Song("No queue - ")))) - else - PlayerStore.instance.queue - ) - - recyclerView = root.findViewById(R.id.queue_lp_recycler).apply { - // use this setting to improve performance if you know that changes - // in content do not change the layout size of the RecyclerView - setHasFixedSize(true) - - // use a linear layout manager - layoutManager = viewManager - - // specify an viewAdapter (see also next example) - adapter = viewAdapter - } - - PlayerStore.instance.isQueueUpdated.observeForever(queueObserver) - - return root - } - - override fun onDestroyView() { - PlayerStore.instance.isQueueUpdated.removeObserver(queueObserver) - super.onDestroyView() - } - - companion object { - @JvmStatic - fun newInstance() = QueueFragment() - } -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/CooldownCalculator.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/CooldownCalculator.kt deleted file mode 100644 index 64175fe..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/CooldownCalculator.kt +++ /dev/null @@ -1,69 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.songs.request - -import kotlin.math.exp -import kotlin.math.max - -/* -//PHP cooldown calculator - -function pretty_cooldown($lp, $lr, $rc) { - $delay = delay($rc); - $now = time(); - $cd = intval(max($lp + $delay - $now, $lr + $delay - $now)); - if ($cd <= 0) - return "Request"; - $days = intdiv_1($cd, 86400); - $cd = $cd % 86400; - $hours = intdiv_1($cd, 3600); - $cd = $cd % 3600; - $minutes = intdiv_1($cd, 60); - $seconds = $cd % 60; - if ($days > 0) - return "Requestable in ".$days."d".$hours."h"; - else if ($hours > 0) - return "Requestable in ".$hours."h".$minutes."m"; - else if ($minutes > 0) - return "Requestable in ".$minutes."m".$seconds."s"; - return "Request"; -} -function requestable($lastplayed, $requests) { - $delay = delay($requests); - return (time() - $lastplayed) > $delay; -} -function delay($priority) { - // priority is 30 max - if ($priority > 30) - $priority = 30; - // between 0 and 7 return magic - if ($priority >= 0 and $priority <= 7) - $cd = -11057 * $priority * $priority + 172954 * $priority + 81720; - // if above that, return magic crazy numbers - else - $cd = (int) (599955 * exp(0.0372 * $priority) + 0.5); - return $cd / 2; -} - */ - -// this function implements the magic delay used on R/a/dio website: -// https://github.com/R-a-dio/site/blob/develop/app/start/global.php#L125 -// (Seriously guys, what were you thinking with these crazy magic numbers...) -fun delay(rawPriority: Int) : Int { - val priority = if (rawPriority > 30) 30 else rawPriority - val coolDown : Int = - if (priority in 0..7) - -11057 * priority * priority + 172954 * priority + 81720 - else - (599955 * exp(0.0372 * (priority.toDouble()) + 0.5)).toInt() - return coolDown/2 -} - -// I tweaked this to report in a single point whether the song is requestable or not -fun coolDown(lastPlayed: Int?, lastRequest: Int?, requestsNbr: Int?) : Long { - if (requestsNbr == null || lastPlayed == null || lastRequest == null) - return Long.MAX_VALUE // maximum positive value : the song won't be requestable - - val delay = delay(requestsNbr) - val now = (System.currentTimeMillis() / 1000) - return max(lastPlayed, lastRequest) + delay - now - // if coolDown < 0, the song is requestable. -} diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/FavoritesFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/FavoritesFragment.kt deleted file mode 100644 index 2631a7b..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/FavoritesFragment.kt +++ /dev/null @@ -1,132 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.songs.request - -import android.os.Build -import android.os.Bundle -import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.SearchView -import android.widget.TextView -import androidx.appcompat.widget.AppCompatButton -import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import fr.forum_thalie.tsumugi.* - - -class FavoritesFragment : Fragment() { - - private lateinit var recyclerView: RecyclerView - private lateinit var viewAdapter: RecyclerView.Adapter<*> - private lateinit var viewManager: RecyclerView.LayoutManager - private lateinit var searchView: SearchView - private lateinit var root: View - private lateinit var recyclerSwipe: SwipeRefreshLayout - - private val favoritesSongObserver : Observer = Observer { - viewAdapter.notifyDataSetChanged() - createView(isCallback = true) // force-re-create the view, but do not call again the initFavorites (avoid callback loop) - recyclerSwipe.isRefreshing = false // disable refreshing animation. Needs to be done manually... - } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - super.onCreateView(inflater, container, savedInstanceState) - root = inflater.inflate(R.layout.fragment_request, container, false) - - return createView() - } - - private fun createView(isCallback: Boolean = false) : View? - { - - viewAdapter = RequestSongAdapter(Requestor.instance.favoritesSongArray) - - val listener : SearchView.OnQueryTextListener = object : SearchView.OnQueryTextListener{ - override fun onQueryTextSubmit(query: String?): Boolean { - // do nothing - return true - } - override fun onQueryTextChange(newText: String?): Boolean { - (viewAdapter as RequestSongAdapter).filter(newText ?: "") - return true - } - } - - searchView = root.findViewById(R.id.searchBox) - searchView.queryHint = "Search filter..." - searchView.setOnQueryTextListener(listener) - viewManager = LinearLayoutManager(context) - recyclerView = root.findViewById(R.id.request_recycler).apply { - // use this setting to improve performance if you know that changes - // in content do not change the layout size of the RecyclerView - setHasFixedSize(true) - - // use a linear layout manager - layoutManager = viewManager - - // specify an viewAdapter (see also next example) - adapter = viewAdapter - } - - val noUserNameText : TextView = root.findViewById(R.id.noUserNameText) - - recyclerSwipe = root.findViewById(R.id.recyclerSwipe) as SwipeRefreshLayout - recyclerSwipe.setOnRefreshListener { - val userName1 = preferenceStore.getString("userName", null) - Log.d(tag,"userName = $userName1") - if (userName1 != null && !userName1.isBlank()) - { - noUserNameText.visibility = View.GONE - Requestor.instance.initFavorites() - } else { - noUserNameText.visibility = View.VISIBLE - recyclerSwipe.isRefreshing = false - } - } - - - val userName1 = preferenceStore.getString("userName", null) - Log.d(tag,"userName = $userName1") - if (userName1 != null && !userName1.isBlank()) - { - noUserNameText.visibility = View.GONE - if (!isCallback) // avoid callback loop if called from the Observer. - Requestor.instance.initFavorites() - } else { - noUserNameText.visibility = View.VISIBLE - recyclerSwipe.isRefreshing = false - } - - val raFButton : AppCompatButton = root.findViewById(R.id.ra_f_button) - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) // for API21+ Material Design makes ripples on the button. - raFButton.supportBackgroundTintList = colorGreenList - else // But on API20- no Material Design support, so we add some more color when clicked - raFButton.supportBackgroundTintList = colorGreenListCompat - raFButton.isEnabled = true - raFButton.isClickable = true - raFButton.setOnClickListener { - val s = Requestor.instance.raF() - Requestor.instance.snackBarText.value = "" - Requestor.instance.addRequestMeta = "Request: ${s.artist.value} - ${s.title.value}\n" - Requestor.instance.request(s.id) - } - raFButton.visibility = View.VISIBLE - - Requestor.instance.isFavoritesUpdated.observe(viewLifecycleOwner, favoritesSongObserver) - return root - } - - - companion object { - @JvmStatic - fun newInstance() = FavoritesFragment() - } -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestFragment.kt deleted file mode 100644 index fa19627..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestFragment.kt +++ /dev/null @@ -1,81 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.songs.request - -import android.os.Bundle -import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.SearchView -import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import fr.forum_thalie.tsumugi.R - -class RequestFragment : Fragment() { - - private lateinit var recyclerView: RecyclerView - private lateinit var viewAdapter: RecyclerView.Adapter<*> - private lateinit var viewManager: RecyclerView.LayoutManager - private lateinit var searchView: SearchView - - private val listener : SearchView.OnQueryTextListener = object : SearchView.OnQueryTextListener{ - override fun onQueryTextSubmit(query: String?): Boolean { - if (query == null || query.isEmpty()) - Requestor.instance.snackBarText.value = "Field is empty, no search possible." - else - Requestor.instance.search(query) - return true - } - override fun onQueryTextChange(newText: String?): Boolean { - if (newText == "") - { - Requestor.instance.reset() - viewAdapter.notifyDataSetChanged() // this is to remove the "Load more" button - } - return true - } - } - - private val requestSongObserver = Observer { - Log.d(tag, "request song list changed") - viewAdapter.notifyDataSetChanged() - } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - val root = inflater.inflate(R.layout.fragment_request, container, false) - - val recyclerSwipe = root.findViewById(R.id.recyclerSwipe) as SwipeRefreshLayout - recyclerSwipe.isEnabled = false // don't need to pull-to-refresh for Request - - searchView = root.findViewById(R.id.searchBox) - searchView.setOnQueryTextListener(listener) - - viewManager = LinearLayoutManager(context) - viewAdapter = RequestSongAdapter(Requestor.instance.requestSongArray) - - recyclerView = root.findViewById(R.id.request_recycler).apply { - // use this setting to improve performance if you know that changes - // in content do not change the layout size of the RecyclerView - setHasFixedSize(true) - - // use a linear layout manager - layoutManager = viewManager - - // specify an viewAdapter (see also next example) - adapter = viewAdapter - } - Requestor.instance.isRequestResultUpdated.observe(viewLifecycleOwner, requestSongObserver) - return root - } - - companion object { - @JvmStatic - fun newInstance() = RequestFragment() - } -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestResponse.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestResponse.kt deleted file mode 100644 index a4c1e73..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestResponse.kt +++ /dev/null @@ -1,42 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.songs.request - -import fr.forum_thalie.tsumugi.playerstore.Song -import org.json.JSONObject - -class RequestResponse(jsonResponse: JSONObject) { - //val total: Int = jsonResponse.getInt("total") - //val perPage: Int = jsonResponse.getInt("per_page") // should stay 20 but in any case... - val currentPage: Int = jsonResponse.getInt("current_page") - val lastPage: Int = jsonResponse.getInt("last_page") - //val fromNbr: Int = jsonResponse.getInt("from") - //val toNbr: Int = jsonResponse.getInt("to") - var songs : ArrayList = ArrayList() - - init { - val songList = jsonResponse.getJSONArray("data") - for (i in 0 until songList.length()) - { - - val title = (songList[i] as JSONObject).getString("title") - val artist = (songList[i] as JSONObject).getString("artist") - val id = (songList[i] as JSONObject).getInt("id") - - val s = Song("", id) - s.title.value = title - s.artist.value = artist - s.isRequestable = (songList[i] as JSONObject).getBoolean("requestable") - // TODO add the time before being requestable. - songs.add(s) - } - } - - override fun toString(): String { - var s = "" - for (i in 0 until songs.size) - { - s += (songs[i].artist.value + " - " + songs[i].title.value + " | ") - } - return s - } - -} \ No newline at end of file diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestSongAdapter.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestSongAdapter.kt deleted file mode 100644 index 6f72f8a..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/RequestSongAdapter.kt +++ /dev/null @@ -1,148 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.songs.request - -import android.annotation.SuppressLint -import android.os.Build -import android.util.TypedValue -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.TextView -import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.widget.TextViewCompat -import androidx.recyclerview.widget.RecyclerView -import fr.forum_thalie.tsumugi.* -import fr.forum_thalie.tsumugi.playerstore.Song -import kotlinx.android.synthetic.main.request_song_view.view.* -import android.view.View -import kotlinx.android.synthetic.main.button_load_more.view.* -import android.R.attr.name -import android.text.method.TextKeyListener.clear -import android.util.Log -import java.util.* -import kotlin.collections.ArrayList - - -class RequestSongAdapter(private val dataSet: ArrayList - /*, - context: Context, - resource: Int, - objects: Array*/ -) : RecyclerView.Adapter() /*ArrayAdapter(context, resource, objects)*/ { - - private val viewTypeCell = 1 // normal cell with song and request button - private val viewTypeFooter = 2 // the bottom cell should be the "load more" button whenever needed - - // Provide a reference to the views for each data item - // Complex data items may need more than one view per item, and - // you provide access to all the views for a data item in a view holder. - // Each data item is just a string in this case that is shown in a TextView. - class MyViewHolder(view: ConstraintLayout) : RecyclerView.ViewHolder(view) - - - // Create new views (invoked by the layout manager) - override fun onCreateViewHolder(parent: ViewGroup, - viewType: Int): MyViewHolder { - // create a new view - - val view = - if (viewType == viewTypeCell) - LayoutInflater.from(parent.context).inflate(R.layout.request_song_view, parent, false) as ConstraintLayout - else - LayoutInflater.from(parent.context).inflate(R.layout.button_load_more, parent, false) as ConstraintLayout - - // set the view's size, margins, paddings and layout parameters - //... - return MyViewHolder(view) - } - - // Replace the contents of a view (invoked by the layout manager) - @SuppressLint("SetTextI18n") - override fun onBindViewHolder(holder: MyViewHolder, position: Int) { - - if (itemCount <= 1) - { - // in any case, if there's nothing, don't display the loadMore button!! - holder.itemView.loadMoreButton.visibility = View.GONE - return - } - - if (holder.itemViewType == viewTypeFooter) - { - if (Requestor.instance.isLoadMoreVisible) - holder.itemView.loadMoreButton.visibility = View.VISIBLE - else - holder.itemView.loadMoreButton.visibility = View.GONE - holder.itemView.loadMoreButton.text = "Load more results" - holder.itemView.loadMoreButton.setOnClickListener{ - Requestor.instance.loadMore() - } - return - } - - val artist = holder.itemView.findViewById(R.id.request_song_artist) - val title = holder.itemView.findViewById(R.id.request_song_title) - val button = holder.itemView.request_button - - if (dataSet[position].isRequestable) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) // for API21+ Material Design makes ripples on the button. - button.supportBackgroundTintList = colorGreenList - else // But on API20- no Material Design support, so we add some more color when clicked - button.supportBackgroundTintList = colorGreenListCompat - button.isEnabled = true - button.isClickable = true - button.setOnClickListener { - Requestor.instance.request(dataSet[position].id) - } - } else { - button.supportBackgroundTintList = colorRedList - button.isEnabled = false - button.isClickable = false - } - - TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration( - button,2, 24, 2, TypedValue.COMPLEX_UNIT_SP) - artist.text = dataSet[position].artist.value - title.text = dataSet[position].title.value - } - - // Return the size of your dataset (invoked by the layout manager) - override fun getItemCount() = dataSet.size + 1 // add 1 for the "Load more results" button - - override fun getItemViewType(position: Int): Int { - return if (position == dataSet.size) viewTypeFooter else viewTypeCell - } - - /* - override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { - // create a new view - val view = LayoutInflater.from(parent.context) - .inflate(R.layout.song_view, parent, false) as ConstraintLayout - } - */ - - // a filtering function. As naive as it could be, but it should work. - private val dataSetOrig = ArrayList() - init { - dataSetOrig.addAll(dataSet) - } - - fun filter(entry: String) { - var text = entry - dataSet.clear() - Log.d(tag, "entering filter") - if (text.isEmpty()) { - dataSet.addAll(dataSetOrig) - } else { - text = text.toLowerCase(locale = Locale.ROOT) - for (item in dataSetOrig) { - Log.d(tag, "$text, ${item.artist.value!!.toLowerCase(locale = Locale.ROOT)}, ${item.title.value!!.toLowerCase(locale = Locale.ROOT)}") - if (item.artist.value!!.toLowerCase(locale = Locale.ROOT).contains(text) || - item.title.value!!.toLowerCase(locale = Locale.ROOT).contains(text)) { - dataSet.add(item) - } - } - } - notifyDataSetChanged() - } - -} - diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/Requestor.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/Requestor.kt deleted file mode 100644 index a9259b2..0000000 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/songs/request/Requestor.kt +++ /dev/null @@ -1,301 +0,0 @@ -package fr.forum_thalie.tsumugi.ui.songs.request - -import android.util.Log -import androidx.lifecycle.MutableLiveData -import fr.forum_thalie.tsumugi.ActionOnError -import fr.forum_thalie.tsumugi.Async -import fr.forum_thalie.tsumugi.playerstore.Song -import fr.forum_thalie.tsumugi.preferenceStore -import fr.forum_thalie.tsumugi.tag -import org.json.JSONArray -import org.json.JSONException -import org.json.JSONObject -import java.io.BufferedReader -import java.io.IOException -import java.io.InputStreamReader -import java.net.CookieHandler -import java.net.CookieManager -import java.net.MalformedURLException -import java.net.URL -import java.util.* -import java.util.regex.Pattern - -import javax.net.ssl.HttpsURLConnection -import kotlin.collections.ArrayList -import kotlin.random.Random - -/** - * Requests a song via the website's API - * - * We scrape the website for a CSRF token and POST it to /request/ endpoint with - * the song id - * - * Created by Kethsar on 1/2/2017. - * Converted to Kotlin and adapted by Yattoz on 05 Nov. 2019 - */ - -class Requestor { - var addRequestMeta: String = "" - private val cookieManager: CookieManager = CookieManager() - private val requestUrl = "https://r-a-d.io/request/%1\$d" - private val searchUrl = "https://r-a-d.io/api/search/%1s?page=%2\$d" - private val favoritesUrl = "https://r-a-d.io/faves/%1s?dl=true" - private val songThresholdStep = 50 - private var songThreshold = songThresholdStep - private var localQuery = "" - - private var token: String? = null - val snackBarText : MutableLiveData = MutableLiveData() - private var responseArray : ArrayList = ArrayList() - val requestSongArray : ArrayList = ArrayList() - val favoritesSongArray : ArrayList = ArrayList() - val isRequestResultUpdated : MutableLiveData = MutableLiveData() - val isFavoritesUpdated : MutableLiveData = MutableLiveData() - var isLoadMoreVisible: Boolean = false - - - init { - snackBarText.value = "" - isRequestResultUpdated.value = false - isFavoritesUpdated.value = false - isLoadMoreVisible = false - } - - fun initFavorites(userName : String? = preferenceStore.getString("userName", null)){ - Log.d(tag, "initializing favorites") - favoritesSongArray.clear() - if (userName == null) - { - // Display is done by default in the XML. - Log.d(tag, "no user name set for favorites") - isFavoritesUpdated.value = true - return - } - val favoritesUserUrl = String.format(Locale.getDefault(), favoritesUrl, userName) - val scrapeFavorites : (Any?) -> JSONArray = { - JSONArray(URL(favoritesUserUrl).readText()) - } - val postFavorites : (Any?) -> Unit = { - val res = it as JSONArray - for (i in 0 until (res).length()) - { - val item = res.getJSONObject(i) - val artistTitle = item.getString("meta") - val id : Int? = if (item.isNull("tracks_id")) - null - else - item.getInt("tracks_id") - - val lastRequested : Int? = if (item.isNull("lastrequested")) null else item.getInt("lastrequested") - val lastPlayed : Int? = if (item.isNull("lastplayed")) null else item.getInt("lastplayed") - val requestCount : Int? = if (item.isNull("requestcount")) null else item.getInt("requestcount") - val isRequestable = (coolDown(lastPlayed, lastRequested, requestCount) < 0) - //Log.d(tag, "val : $id") - favoritesSongArray.add(Song(artistTitle, id ?: 0, isRequestable)) - } - Log.d(tag, "favorites : $favoritesSongArray") - isFavoritesUpdated.value = true - } - Async(scrapeFavorites, postFavorites, ActionOnError.NOTIFY) - } - - fun search(query: String) - { - responseArray.clear() - requestSongArray.clear() - localQuery = query - searchPage(query, 1) // the searchPage function is recursive to get all pages. - } - - private fun searchPage(query: String, pageNumber : Int) - { - val searchURL = String.format(Locale.getDefault(), searchUrl, query, pageNumber) - val scrape : (Any?) -> JSONObject = { - val res = URL(searchURL).readText() - val json = JSONObject(res) - json - } - val post : (Any?) -> Unit = { - val response = RequestResponse(it as JSONObject) - - responseArray.add(response) - for (i in 0 until response.songs.size) - { - requestSongArray.add(response.songs[i]) - } - isRequestResultUpdated.value = true - if (requestSongArray.size >= songThreshold) - { - isLoadMoreVisible = true - - } else { - if (response.currentPage < response.lastPage) - searchPage(query, pageNumber + 1) // recursive call to get the next page - else - finishSearch() - } - - } - Async(scrape, post, ActionOnError.NOTIFY) - } - - private fun finishSearch() - { - isLoadMoreVisible = false - } - - fun reset() - { - requestSongArray.clear() - responseArray.clear() - isRequestResultUpdated.value = false - songThreshold = songThresholdStep - } - - fun loadMore() - { - songThreshold += songThresholdStep - searchPage(localQuery, responseArray.last().currentPage + 1) - } - - - /** - * Scrape the website for the CSRF token required for requesting - * scrapeToken and postToken are the two lambas run by the Async() class. - */ - - private val scrapeToken : (Any?) -> Any? = { - val radioSearchUrl = "https://r-a-d.io/search" - var searchURL: URL? = null - var retVal: String? = null - var reader: BufferedReader? = null - - CookieHandler.setDefault(cookieManager) // it[0] ?? - - try { - searchURL = URL(radioSearchUrl) - } catch (e: MalformedURLException) { - e.printStackTrace() - } - - try { - reader = BufferedReader(InputStreamReader(searchURL!!.openStream(), "UTF-8")) - var line: String? - line = reader.readLine() - while (line != null) - { - line = line.trim { it <= ' ' } - val p = Pattern.compile("value=\"(\\w+)\"") - val m = p.matcher(line) - - if (line.startsWith(" (Unit) = { - token = it as String? - } - - /** - * Request the song with the CSRF token that was scraped - */ - private val requestSong: (Any?) -> Any? = { - val reqString = it as String - var response = "" - - try { - val reqURL = URL(reqString) - val conn = reqURL.openConnection() as HttpsURLConnection - val tokenObject = JSONObject() - - tokenObject.put("_token", token) - val requestBytes = tokenObject.toString().toByteArray() - - conn.requestMethod = "POST" - conn.doOutput = true - conn.doInput = true - conn.setChunkedStreamingMode(0) - conn.setRequestProperty("Content-Type", "application/json") - - val os = conn.outputStream - os.write(requestBytes) - - val responseCode = conn.responseCode - - if (responseCode == HttpsURLConnection.HTTP_OK) { - var line: String? - val br = BufferedReader(InputStreamReader( - conn.inputStream)) - line = br.readLine() - while (line != null) { - response += line - line = br.readLine() - } - } else { - response += "" - } - } catch (ex: IOException) { - ex.printStackTrace() - } catch (ex: JSONException) { - ex.printStackTrace() - } - - response - } - - private val postSong : (Any?) -> (Unit) = { - val response = JSONObject(it as String) - val key = response.names()!!.get(0) as String - val value = response.getString(key) - - snackBarText.postValue(addRequestMeta + value) - } - - - fun request(songID: Int?) { - val requestSongUrl = String.format(requestUrl, songID!!) - if (token == null) { - Async(scrapeToken, postToken, ActionOnError.NOTIFY) - } - Async(requestSong, postSong, ActionOnError.NOTIFY, requestSongUrl) - } - - fun raF() : Song { - // request a random favorite song. HELL YEAH - val requestableSongArray = ArrayList() - for (i in 0 until favoritesSongArray.size) - { - if (favoritesSongArray[i].isRequestable && (favoritesSongArray[i].id ?: 0) > 0) - requestableSongArray.add(favoritesSongArray[i]) - } - return if (requestableSongArray.isNotEmpty()) { - val songNbr = Random(System.currentTimeMillis()).nextInt(1, requestableSongArray.size) - requestableSongArray[songNbr] - } else { - Song("No song requestable - ") - } - } - - companion object { - val instance by lazy { - Requestor() - } - } - -} diff --git a/app/src/main/res/drawable-anydpi-v24/lollipop_logo.xml b/app/src/main/res/drawable-anydpi-v24/lollipop_logo.xml deleted file mode 100644 index e95de7f..0000000 --- a/app/src/main/res/drawable-anydpi-v24/lollipop_logo.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable-anydpi/ic_chat_processing.xml b/app/src/main/res/drawable-anydpi/ic_chat_processing.xml deleted file mode 100644 index aac6443..0000000 --- a/app/src/main/res/drawable-anydpi/ic_chat_processing.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/app/src/main/res/drawable-anydpi/ic_open_in_browser.xml b/app/src/main/res/drawable-anydpi/ic_open_in_browser.xml deleted file mode 100644 index 6f81348..0000000 --- a/app/src/main/res/drawable-anydpi/ic_open_in_browser.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/app/src/main/res/drawable-hdpi/ic_chat_processing.png b/app/src/main/res/drawable-hdpi/ic_chat_processing.png deleted file mode 100644 index d1743c607d7c774f3648b8bf616e74488e3e14cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBCVRR#hE&{odn1vnL4k+$!2)Tn zDhYqV(xzvQxlWBPJ%_G{=70F-@qk?^myh|?Y0+dE%W0bnoSrVRjky)fbdzmD@f?;} zRt;&KTgn(%8@wD?1RO*i=Ousp(e(AYgWB(NB5VGOFL`&O;4}jh#{w~3oy_b{(M@^1 zjw*i-SMhW$VJl`dl5)$mox!t&x!5GAqR7#94e!m>&U2eDC!7X4kHOQ`&t;ucLK6TM Cxk>~8 diff --git a/app/src/main/res/drawable-hdpi/ic_open_in_browser.png b/app/src/main/res/drawable-hdpi/ic_open_in_browser.png deleted file mode 100644 index 787c104b77d2eebdda104c9db28a11415d6a3c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB=6Jd|hE&{od;K79gMt8ygVhD8 zH!fZ`n$|eS+vtd#XR%j1rYyIh(ER576E;tj&KdGtRxmu~Xyw^lVw&giUT({bxLqO* zb9TSKnC-BS>Dh|w4FQ5IO=}!A3Yr`PiUXpW!yCNp=Wl)R$Yl}di!_@BS{|0G16Ze6 zT6}!pKTDx$AJZqx<3F>QpH@h$t^1_wuzAboU2L|DPh*=U+6>RJ8M9ng_OuIl40I=h Mr>mdKI;Vst0P!4ACIA2c diff --git a/app/src/main/res/drawable-hdpi/lollipop_logo.png b/app/src/main/res/drawable-hdpi/lollipop_logo.png index 4016d461e13907d41d19d88049ebf410879c0ed1..f2a8921fc7d367490cd8646906b7658eebed9b60 100644 GIT binary patch delta 1080 zcmV-81jqZ51I!4JBYy-FNklaf@4a$;P@ekLz3065 zoc}$~d6s*lqW)Wi%=5fh&v2eQmY=08q&2oye2T^b>T% zN6<@(DYJ~{f=b{C*u|4*$@y$`I&#YKe7_QOmoMrPBlqKtkDyy%q%rmtv{P%W=N)PQ zI&ywL=Ok6EQP1`UJ%f>J6V%-2{)nvrsp|bl(1%f1hkuE31Q-VDgUxiGh-%0^#O(ws+6*uku2g@gElTfbA7~oVwRRr zo&^qaOito3n8A7%N0Puoa6@J8WbPxPv-w35{VwzlhoCoxE8p`J#1*qC?4GzztyP}) zqrdvx)_>p4LFXKTURcK3f)XBmQ-0&tmU<|W^-R^llyJoajP$SVsb#D^I7LyhJ_S0O zX(4Fq!xa>5v>4j%&?Q0p0BTBEpex%u*6hddFIBD=_tpwm)OClT@2pL7k&iMX*JL#p zTjW?zF82_%&N6UK#=;e}%_rx5x7C2vv=MxC}-+ONB*HqE8>BQ@~Wqcq+&9*eg9@rT2{1w;kBT1R4D&krp&b zg5xaXb65%jY(H#vpQkoSvNPKlp^BfV;t+zQb;z-d7X|wsR&ZNQyh}mS54C1;mE@V> zCx7T{2tm_94_mKfq>!7IXQZyBvA9at&W#|vC)j29bg+3wjM*1i;G zdikB#%kOlWg=jxKUP!qoSB>$vvYA>d!4e>aDnDhhUCwr;j3~O}5m*NXgUODpEiPH) zxY)TABcjh6^Z7yd&|O`mr`9d57BiO3R)4G-8{)`C34GSpSI2QKhXS;1;mHKJelp#b zVr^e7W0M?ilM7j$bxE64^@{v#8e0?3=rAR+TB<$lC**M9DuK!!#xgH| zQgl?$Wd2TnblM^49UFGr&*_UQA0;^=Em7@}9n;KKm5ed5pF@mbtxLBh_)basSL8V?O{lf}ekfi3M8#0000!s)=Anl}w19XL5Wh!r#19}|3dA<_a0D9=M*#6b zETM4=h>L+(gdPr21maF0eu?IYpFq3{h@I)-2xcG-0OIXH{C^M4At3$^APxs&2Qsk% z5VH{L7*QZT|DX2Y6c7s$>NZ7FuWY}5ZdS(a0l%JVkIPbK_H$pP!2kcs}cl? z&m9N{IpI+U3UR5w^mNc)Ld{R0{B?SVkSGDQ59sZnFg)s%2Ok0ssI7 WCs6wc*rsCu0000{G3`a-<^}y+ZHGU&{ANm&mXw>LCd$UG5ac-rJJLru(qx4pGkAXL}ESZ29u zN@T;~f;H0ul=(C!$!~4Y;8uHd`qz#hOGL^dy0e9J4#dawH!(6YL?4YY_n2fL4YZfR M)78&qol`;+0Pbcr;{X5v diff --git a/app/src/main/res/drawable-mdpi/lollipop_logo.png b/app/src/main/res/drawable-mdpi/lollipop_logo.png index 9d6e9527c027dd90dd7daad4dfbcdd5f6e762ba0..0f687a77f422bc26b267effdcd5c75e6125b9bc8 100644 GIT binary patch delta 635 zcmV->0)+j(0+R)hBYy%~Nkl_cupL@p9;|_juoo&J^S8m5!hh4`r|p0_@FDrtF2k_? z2A>UIO^}x`6dtJmP0ufS?(0wR4BUujc@U~h{|R(K2Q+H}nLiaMPjYQF)R_J)*bndE zG(3h9jW2_(&;%1bfhI>_7u+%Zt1A8*D1dgT*7$8O7`BAACvd?L*aV-|?od4jLK}=z zp-;g8*Z}#kB7aQG%YSzi{5vdz+iH)2daWS%7itB)FdEitl69dS3ye?@YuTBfQSLV@ zMa4=**l~yS&JnGm0%nDFEHFI^9=78rBh&zw^qgVF4Tm0W+p%doXt9(3*LwEBD(G~^ zm1x@rJCG(Y-w`+l_hAogR0^j?bt{)Yymu{ZfZqv}I)62I2DPvb-pbb)jjNTvTf3<= zZ55q~Z)Z*W1T2ExYCn?yqYhbRPJxZUQ73qx3Y)dN+MY|I_j;AC@LRQ8@NjWC0-=B_ zO}|IE&nWL%doO`1ZPf}-pw$t01rwqb6`89cYxkf~*ZL$F9|zA@QQK53YvBaHF#VmH zZJF`4OLSn0&eTlrBU7k$jdP=(H2uR8T@KIX3lo^D@x?g;kyv9Sa2(c}ez>ZOU?kkM z7o)}xfyrqC&5=O(sEjgSvtSK+_nh&ynA2U5CUC{MRj0vq<9n!U`@HeB{_}q)KL8P^ VV^LZc__hE5002ovPDHLkV1oVCF9rYr delta 292 zcmV+<0o(qQ1-=51BYyz}NklObY+1rT##v%nCl;3yEslYfbiLd`J1W`QwOaxn!# zyclYRF;y&p=7;-0TtX`g0-<_ZNU?w#fG7+8KrQEPm9UaKTy6EvY^Z@`E-ad+ldjKZ@0000 - + =&?! z(o;N>$|U&c+6%|yaT*lqGje;dQGdnKnuUFIhSxkg5R{ssIz5{wKC1$-6E3=9hx4xB5l-y3I=0AzOj5dsQ< z!8)58T|6GA7`{KuGdXbn_-pru-G|QiI+p!mbV&Xq-f-@RY{Ru5XSc7s_e0d7_z%wo dS$~hlnGCl+Jet+r&$bI>gr}>Y%Q~loCIJ6LTa^F+ diff --git a/app/src/main/res/drawable-xhdpi/ic_open_in_browser.png b/app/src/main/res/drawable-xhdpi/ic_open_in_browser.png deleted file mode 100644 index 4c673f6e0534383dea5661c9033d45cd73a886db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUt1D-C9Ar-gY-f-kq%#F>l!PM?0w{`^py^pt~3tR1-4 zN;u|l5%_3A5uuLoKA|J=7cC+jMTiitBeZGX9U`<6787#+3&HymZX@hT*lC?6{9T0K z6K>+~))F%RE#XhXZoBAf!XWU@2?(##YlQTk7XCQG#{og+f_Eh0=R|U}xTh6Z8xUZx za!~sFsDtN#_J8>o!cW>We;(XZ!k;5BhZW$>GMrYY=e5u6gc(p=(TzQ&z)J!XxCqXB znTLnN>Ot*!8X+~bksH|bqQ?4}gnuUq4TPJJ5T7DENa!t5pjn{6 zK0+bkQjfE<4?RQ}LiiEyRw7@FCA^B0KGj&i8bKi)Cb}BooKLPaBz&3?Ieavm(Bu(* z6=5jmeFpChF+4NhV}vDyIG>Cp`bcRC5|WMXV?nifug3d}ku#!% z&3N~Y;(w*TClXq;ajd`%IPD28pV1YVClvlW!a$gaPVAVQ2>r2m8g_g*!YB(rm@uF4 zqBdq6*3ZDHGEZ;92oAN_taJG!Lkctq75D;?qQ-dtG#7oCYcwH`%?LaGI-wsS8~I?P zHm*UFp%%qqEuvdFHe@-WBBa1a0^z%1r>CGg{eMLJt`74|M674~U5eej1>f;zI-3IXy#?NUgyk`49$bjhW2huM zb|#^~2soXKijDa%2%Ioiu`%2i_Vo>r4wNkcC7dAr@qiBbxk~p)Do*haUb7 zXw$IWFF+sZWMuigV4=r$mZT4GNie|E7p<|ZG2b&^9n2i<3P)t;63$w9K`53p& z)mpTy5kt=?VX1*CG``EZ_lnC6huw)11vXfkv-7w^ZGeH9xZ{%zu}m5~IO& zHzFA;a%)KV0Z2^TQhx-FlZ8vQiyARD?&;2zqGsZfI~)89EWBMP?uKbHvE5Hq*5MO= z2D)Km&GucutahQM$wYZ!qlMUY4ukh1nw;&qSCp&71!s<{BOTsFH@gpX>SWf!&M0w2ZgEaBMM3C7&@4&D#= zw`YTwe~TWNiUKiVZBzpOb%707*qoM6N<$ Ef};fiGynhq delta 469 zcmV;`0V@914DJJvBYy$4NklWItyFq=^eKbbF*Owz9z??o7rSv ze?V!^{BG&les9;WZX zCKzEdJ^>@=8? z%fp;bfQ+j+6@SwH@>Lldzy|pFo<-OHK5ANkg6lmUHbAomV2};aQ~@s4R)3^!T*d^b zfQesPCi3R>$R42RcP_`Xv40NnrvS2x))$~I%NiiB(Sdtl3^1!vd&n3dtx;QK43N{P zykNAUJZ6kjJypDj7%&X0tycH4SsO8vHiFB^Y^)5@PH&5v{<@6&1NrQeZd6gGBBWC!g3f7W#$4?p#M^|$QHi+qNzQR>9yL5#;(_3Y|OJ577F&{lLlT$=I soh=||jm=&yu-DnX00s?%r>mdKI;Vst0HY~#$^ZZW diff --git a/app/src/main/res/drawable-xxhdpi/ic_open_in_browser.png b/app/src/main/res/drawable-xxhdpi/ic_open_in_browser.png deleted file mode 100644 index 34d395e6c97b67860fe85bc33b844b4fcaeb3312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2VASw*aSW-r_4c+S*C7J|w}*OF zjMdAl82D4TUukZ7q@B z)P<+nF5kO7%p!Kqbmb{`mb||Z`KKuBz)zQ~sSdTS7O%f}E!gO^Adpi;i-pT;!OCNd z910B#OfTj)%ItM!Vi9m)U}TwK7!dP$8ruS!bGyFrF0kp7IcXZe=HB&0>;-op&q>t_ z{T4zh~xL|y4>Bbi?N>>Os pUW$8vI==O6sRr1uN|U~_o$9(gYvJS`9$?Thc)I$ztaD0e0sy>Lh8+L^ diff --git a/app/src/main/res/drawable-xxhdpi/lollipop_logo.png b/app/src/main/res/drawable-xxhdpi/lollipop_logo.png index 05d6f2c727cbb44e3b364580a4827167acaae271..7c68b4a9769879cdd54a2a001128b1a8589e1e2d 100644 GIT binary patch delta 2773 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 bWs{!(EPKJ5Fe?@E00000NkvXXu0mjfMXFE# delta 675 zcmV;U0$lyv6}knGBYy&cNklEfs=br&bm@5h0Mm zAGGi|P=u5bB@$DlPzfH`h}tNTC^j~VTB)f5RtdHth$5l}75pJa&Ey?!K*3daZ)es0 z=6m5O@4K7lc4lXGW&;5Zhr{7;bVmsBf-PK^k_pm>Wz}nWQh(%CwE$j&XOyS^Z`JhQZsa)B2MSG`{@<2GP$%zXRHdZZnEqQuN}L2A z9+*bi2CwAQf-T|y{00qP$hi=-(x^*L5bOwg*#j9m1T_h|iRuv4Ls(G14ne~fg?D{; z2i~=4$1n?GK`e*`u^{gn{mx=J5n(}>zs+jrBhG?Y5Pu6|L8c3$5*EaQSP%;`O3(?I z1w-Hy7zb-CDDli%ZU+T#s8J4U4vQv>&?&xotv9u9Cg92^dZ!{Ko5%zy34JKu@aWo`ff002ov JPDHLkV1h+%FRuUq diff --git a/app/src/main/res/drawable-xxxhdpi/lollipop_logo.png b/app/src/main/res/drawable-xxxhdpi/lollipop_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bf01ebe15de2e0205cd4fd1c9bda153d2ade0816 GIT binary patch literal 4245 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/actionbar_logo.jpg b/app/src/main/res/drawable/actionbar_logo.jpg deleted file mode 100644 index 2342c486ec7d6f65c99eca3a2363a49cbd84d431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13237 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 + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_radio_logo_round.xml b/app/src/main/res/drawable/ic_radio_logo_round.xml deleted file mode 100644 index 76263ae..0000000 --- a/app/src/main/res/drawable/ic_radio_logo_round.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_radiologo.xml b/app/src/main/res/drawable/ic_radiologo.xml deleted file mode 100644 index 7a21266..0000000 --- a/app/src/main/res/drawable/ic_radiologo.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_tsumugi_lineart.xml b/app/src/main/res/drawable/ic_tsumugi_lineart.xml new file mode 100644 index 0000000..4fcc31c --- /dev/null +++ b/app/src/main/res/drawable/ic_tsumugi_lineart.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/logo_roundsquare.png b/app/src/main/res/drawable/logo_roundsquare.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5e6a3595b65896ea1bbcb6f0ecc5e2c937ff22 GIT binary patch literal 112077 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 GL;edfWH{&m literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/normal_logo.png b/app/src/main/res/drawable/normal_logo.png deleted file mode 100644 index 9a286c8ab2cea996f941f806858aa193bf273afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4317 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 LNkvXXu0mjfaELux diff --git a/app/src/main/res/drawable/seek_bar_progress.xml b/app/src/main/res/drawable/seek_bar_progress.xml deleted file mode 100644 index ab7b54d..0000000 --- a/app/src/main/res/drawable/seek_bar_progress.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/seek_bar_thumb.xml b/app/src/main/res/drawable/seek_bar_thumb.xml deleted file mode 100644 index 0a623c6..0000000 --- a/app/src/main/res/drawable/seek_bar_thumb.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 7006b70..be58590 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -37,15 +37,17 @@ app:layout_constraintTop_toTopOf="parent" > + + android:contentDescription="@string/r_a_dio_icon" + android:visibility="gone"/> + app:layout_constraintTop_toBottomOf="@id/streamerPicture" + android:visibility="gone"/> + app:layout_constraintTop_toBottomOf="@id/streamerName" + android:visibility="gone" + /> + + tools:layout_editor_absoluteX="0dp" + android:visibility="gone"/> + + app:layout_constraintTop_toBottomOf="@id/progressBar" + android:visibility="gone"/> + + app:layout_constraintTop_toBottomOf="@id/progressBar" + android:visibility="gone"/> diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml index d97db44..ddcba1b 100644 --- a/app/src/main/res/menu/bottom_nav_menu.xml +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -16,9 +16,5 @@ android:icon="@drawable/ic_newspaper" android:title="@string/title_news"/> - diff --git a/app/src/main/res/menu/toolbar_menu.xml b/app/src/main/res/menu/toolbar_menu.xml index 2c3b164..7f2d091 100644 --- a/app/src/main/res/menu/toolbar_menu.xml +++ b/app/src/main/res/menu/toolbar_menu.xml @@ -14,11 +14,12 @@ android:icon="@drawable/ic_alarm" app:showAsAction="ifRoom"/> - +