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