From d03b06341ab97430a6fe7d47ca53e64cb1b758c9 Mon Sep 17 00:00:00 2001 From: yattoz <12408848+yattoz@users.noreply.github.com> Date: Sun, 12 Jan 2020 13:17:04 +0100 Subject: [PATCH 1/3] added refresh button, put font back to 16/20sp --- .../java/fr/forum_thalie/tsumugi/MainActivity.kt | 9 +++++++++ .../tsumugi/playerstore/PlayerStore.kt | 2 +- .../tsumugi/ui/nowplaying/NowPlayingFragment.kt | 3 +++ app/src/main/res/layout/fragment_nowplaying.xml | 14 +++++++------- app/src/main/res/menu/toolbar_menu.xml | 13 ++++++------- app/src/main/res/values-fr/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 7 files changed, 30 insertions(+), 15 deletions(-) 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 fb02746..91fd2c7 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/MainActivity.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/MainActivity.kt @@ -15,6 +15,7 @@ import fr.forum_thalie.tsumugi.playerstore.PlayerStore import java.util.Timer import android.view.MenuItem +import com.google.android.material.snackbar.Snackbar import fr.forum_thalie.tsumugi.alarm.RadioAlarm import fr.forum_thalie.tsumugi.planning.Planning @@ -86,6 +87,14 @@ class MainActivity : BaseActivity() { true } */ + R.id.action_refresh -> { + PlayerStore.instance.queue.clear() + //PlayerStore.instance.lp.clear() + PlayerStore.instance.initApi() + val s = Snackbar.make(findViewById(R.id.nav_host_container), getString(R.string.refreshing) as CharSequence, Snackbar.LENGTH_LONG) + s.show() + true + } R.id.action_settings -> { val i = Intent(this, ParametersActivity::class.java) startActivity(i) 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 94e16ac..1a51ce9 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 @@ -127,7 +127,7 @@ class PlayerStore { { updateApi(result) currentSongBackup.copy(currentSong) - + fetchLastRequest() isQueueUpdated.value = true isLpUpdated.value = true diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/nowplaying/NowPlayingFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/nowplaying/NowPlayingFragment.kt index c2357e9..1fba724 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/nowplaying/NowPlayingFragment.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/ui/nowplaying/NowPlayingFragment.kt @@ -69,6 +69,9 @@ class NowPlayingFragment : Fragment() { listenersText,8, 16, 2, TypedValue.COMPLEX_UNIT_SP) */ + TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration( + currentProgrammeText,8, 20, 2, TypedValue.COMPLEX_UNIT_SP) + // trick : I can't observe the queue because it's an ArrayDeque that doesn't trigger any change... // so I observe a dedicated Mutable that gets set when the queue is updated. diff --git a/app/src/main/res/layout/fragment_nowplaying.xml b/app/src/main/res/layout/fragment_nowplaying.xml index 1c6823a..46115b6 100644 --- a/app/src/main/res/layout/fragment_nowplaying.xml +++ b/app/src/main/res/layout/fragment_nowplaying.xml @@ -193,7 +193,7 @@ android:text="" android:textAlignment="center" android:textColor="@color/whited3" - android:textSize="14sp" + android:textSize="16sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/upNext" android:visibility="visible"/> @@ -206,7 +206,7 @@ android:text="" android:textAlignment="center" android:textColor="@color/whited" - android:textSize="14sp" + android:textSize="16sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/text_song_artist_next" android:visibility="visible" /> @@ -222,7 +222,7 @@ android:text="@string/current_programme" android:textAlignment="center" android:textColor="@color/whited3" - android:textSize="14sp" + android:textSize="16sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="@id/topInfoGuideline" android:visibility="visible" /> @@ -237,7 +237,7 @@ android:gravity="start|bottom" android:textAlignment="textStart" android:textColor="@color/whited" - android:textSize="14sp" + android:textSize="16sp" app:layout_constraintStart_toEndOf="@id/current_programme" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="@id/topInfoGuideline" @@ -298,7 +298,7 @@ android:text="" android:textAlignment="center" android:textColor="@color/whited" - android:textSize="18sp" + android:textSize="20sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" /> @@ -310,7 +310,7 @@ android:text="" android:textAlignment="center" android:textColor="@color/whited3" - android:textSize="18sp" + android:textSize="20sp" app:layout_constraintBottom_toTopOf="@id/text_song_title" app:layout_constraintStart_toStartOf="parent" /> @@ -376,7 +376,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.58" /> + app:layout_constraintGuide_percent="0.63" /> - + + + app:showAsAction="never"/> \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 323a71d..2005dc1 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -52,5 +52,7 @@ Choisir une durée (en minutes) Extinction dans %1$d minutes Choisir la fréquence de mise à jour quand la radio est stoppée + Actualisation… + Raffraîchir les données diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d2a4652..6408717 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -72,5 +72,7 @@ Set duration (minutes) Will close in %1$d minutes Set update period when stopped + Refreshing data… + Refresh data From a59d57a685176f2926b0a96f1bdb8dbdb5f1ca12 Mon Sep 17 00:00:00 2001 From: yattoz <12408848+yattoz@users.noreply.github.com> Date: Sun, 12 Jan 2020 14:24:40 +0100 Subject: [PATCH 2/3] fixed layout, more readable (back to bigger fonts among other) --- .../tsumugi/playerstore/PlayerStore.kt | 2 +- .../ui/nowplaying/NowPlayingFragment.kt | 12 +-- .../main/res/layout/fragment_nowplaying.xml | 85 ++++++++++++------- app/src/main/res/values-fr/strings.xml | 4 +- 4 files changed, 61 insertions(+), 42 deletions(-) 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 1a51ce9..df4c151 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 @@ -229,7 +229,7 @@ class PlayerStore { val queueJSON = resMain.getJSONObject("next") val t = extractSong(queueJSON) - if (queue.isNotEmpty() && t == queue.last()) + if (queue.isNotEmpty() && (t == queue.last() || t == currentSong)) { //[REMOVE LOG CALLS]Log.d((tag, playerStoreTag + "Song already in there: $t") Async(sleepScrape, post) diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/ui/nowplaying/NowPlayingFragment.kt b/app/src/main/java/fr/forum_thalie/tsumugi/ui/nowplaying/NowPlayingFragment.kt index 1fba724..1e306ac 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/ui/nowplaying/NowPlayingFragment.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/ui/nowplaying/NowPlayingFragment.kt @@ -6,8 +6,6 @@ import android.content.Context import androidx.lifecycle.ViewModelProviders import android.os.Bundle import android.support.v4.media.session.PlaybackStateCompat -import android.util.Log -import android.util.TypedValue import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -15,7 +13,6 @@ import android.view.ViewGroup import android.widget.* import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet -import androidx.core.widget.TextViewCompat import androidx.lifecycle.Observer import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.Snackbar @@ -24,7 +21,6 @@ import fr.forum_thalie.tsumugi.alarm.RadioSleeper import fr.forum_thalie.tsumugi.planning.Planning import fr.forum_thalie.tsumugi.playerstore.PlayerStore import fr.forum_thalie.tsumugi.playerstore.Song -import kotlinx.android.synthetic.main.fragment_nowplaying.* class NowPlayingFragment : Fragment() { @@ -49,7 +45,7 @@ class NowPlayingFragment : Fragment() { val volumeText: TextView = root.findViewById(R.id.volume_text) val progressBar: ProgressBar = root.findViewById(R.id.progressBar) val volumeIconImage : ImageView = root.findViewById(R.id.volume_icon) - val currentProgrammeText: TextView = root.findViewById(R.id.text_current_programme) + val currentProgrammeText: TextView = root.findViewById(R.id.current_programme) val streamerPictureImageView: ImageView = root.findViewById(R.id.streamerPicture) // Note: these values are not used in the generic app, but if you want to, you can use them. @@ -69,10 +65,6 @@ class NowPlayingFragment : Fragment() { listenersText,8, 16, 2, TypedValue.COMPLEX_UNIT_SP) */ - TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration( - currentProgrammeText,8, 20, 2, TypedValue.COMPLEX_UNIT_SP) - - // trick : I can't observe the queue because it's an ArrayDeque that doesn't trigger any change... // so I observe a dedicated Mutable that gets set when the queue is updated. PlayerStore.instance.isQueueUpdated.observe(viewLifecycleOwner, Observer { @@ -97,7 +89,7 @@ class NowPlayingFragment : Fragment() { Planning.instance.currentProgramme.observe(viewLifecycleOwner, Observer { - currentProgrammeText.text = it + currentProgrammeText.text = "${context!!.getString(R.string.current_programme)} $it" }) diff --git a/app/src/main/res/layout/fragment_nowplaying.xml b/app/src/main/res/layout/fragment_nowplaying.xml index 46115b6..efaee16 100644 --- a/app/src/main/res/layout/fragment_nowplaying.xml +++ b/app/src/main/res/layout/fragment_nowplaying.xml @@ -49,7 +49,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - app:layout_constraintGuide_percent="0.68" /> + app:layout_constraintGuide_percent="0.71" /> + app:layout_constraintTop_toBottomOf="@id/seek_bar_volume" + app:layout_constraintVertical_weight="3"> - - - + + + + > + + + + + + + Volume : - Prochain titre : - Émission en cours : + À suivre : + Émission : En cours Erreur du chargement de WebView. Téléchargez Google Chrome sur le Play Store, ou activez le si vous l\'avez désactivé. Paramètres From 0b37a838e982aafa9ebd717e87267d02fcce113a Mon Sep 17 00:00:00 2001 From: yattoz <12408848+yattoz@users.noreply.github.com> Date: Sun, 12 Jan 2020 14:52:25 +0100 Subject: [PATCH 3/3] added Html decoding for UTF-8 chars decoded with ISO8859-1 by Airtime --- .../main/java/fr/forum_thalie/tsumugi/playerstore/Song.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/forum_thalie/tsumugi/playerstore/Song.kt b/app/src/main/java/fr/forum_thalie/tsumugi/playerstore/Song.kt index b0e8526..ea97982 100644 --- a/app/src/main/java/fr/forum_thalie/tsumugi/playerstore/Song.kt +++ b/app/src/main/java/fr/forum_thalie/tsumugi/playerstore/Song.kt @@ -1,5 +1,6 @@ package fr.forum_thalie.tsumugi.playerstore +import androidx.core.text.HtmlCompat import androidx.lifecycle.MutableLiveData import fr.forum_thalie.tsumugi.noConnectionValue @@ -24,8 +25,9 @@ class Song(artistTitle: String = "", _id : Int = 0) { return "id=$id | ${artist.value} - ${title.value} | type=${type.value} | times ${startTime.value} - ${stopTime.value}\n" } - fun setTitleArtist(data: String) + fun setTitleArtist(dataHtml: String) { + val data = HtmlCompat.fromHtml(dataHtml, HtmlCompat.FROM_HTML_MODE_LEGACY).toString() val hyphenPos = data.indexOf(" - ") try { if (hyphenPos < 0) @@ -50,8 +52,7 @@ class Song(artistTitle: String = "", _id : Int = 0) { } fun copy(song: Song) { - this.title.value = song.title.value - this.artist.value = song.artist.value + this.setTitleArtist(song.artist.value + " - " + song.title.value) this.startTime.value = song.startTime.value this.stopTime.value = song.stopTime.value this.type.value = song.type.value