diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 63bbb71c..d52377f1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,7 +29,7 @@ and test. ### Pull Request Process -1. Ensure all commits are signed-off. +1. Ensure [all commits are signed-off](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/about-commit-signature-verification). 2. Check tests for the new code are added. 3. Check code style is passing. 4. Check code static analysis is passing. diff --git a/README.md b/README.md index 30e14864..fe85fd26 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,12 @@ Ultrasonic is free and open-source music streaming Android client for [Subsonic] We currently don't have that much time to spend developing Subsonic, so any contributions or active developers are always welcomed. +### BIG FAT WARNING + +At this moment all new features and enhancements are blocked by #310, this +means that no new PR will be accepted until this issue is closed. Obviously +any PR to fix #310 are welcomed and celebrated. + ## Download App is available to download at following stores: diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index 0ce0a8d3..2c1fe2bf 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { applicationId "org.moire.ultrasonic" - versionCode 87 - versionName "2.17.3" + versionCode 88 + versionName "2.18.0" minSdkVersion versions.minSdk targetSdkVersion versions.targetSdk diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java index b146794f..aaaaeb96 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectAlbumActivity.java @@ -806,6 +806,11 @@ public class SelectAlbumActivity extends SubsonicTabActivity new LoadTask() { + @Override + protected boolean sortableCollection() { + return false; + } + @Override protected MusicDirectory load(MusicService service) throws Exception { @@ -882,6 +887,16 @@ public class SelectAlbumActivity extends SubsonicTabActivity new LoadTask() { + @Override + protected boolean sortableCollection() { + if (albumListType.equals("newest") || albumListType.equals("random") || + albumListType.equals("highest") || albumListType.equals("recent") || + albumListType.equals("frequent")) { + return false; + } + return true; + } + @Override protected MusicDirectory load(MusicService service) throws Exception { @@ -1096,6 +1111,10 @@ public class SelectAlbumActivity extends SubsonicTabActivity protected abstract MusicDirectory load(MusicService service) throws Exception; + protected boolean sortableCollection() { + return true; + } + @Override protected Pair doInBackground() throws Throwable { @@ -1111,7 +1130,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity MusicDirectory musicDirectory = result.getFirst(); List entries = musicDirectory.getChildren(); - if (Util.getShouldSortByDisc(SelectAlbumActivity.this)) + if (sortableCollection() && Util.getShouldSortByDisc(SelectAlbumActivity.this)) { Collections.sort(entries, new EntryByDiscAndTrackComparator()); } diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java index 637e2bc4..e16c886e 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SubsonicTabActivity.java @@ -170,6 +170,9 @@ public class SubsonicTabActivity extends ResultActivity implements OnClickListen restart(); } + // This must be filled here because onCreate is called before the derived objects would call setContentView + getNowPlayingView(); + if (!nowPlayingHidden) { showNowPlaying(); @@ -242,6 +245,19 @@ public class SubsonicTabActivity extends ResultActivity implements OnClickListen return destroyed; } + private void getNowPlayingView() + { + if (nowPlayingView == null) + { + try { + nowPlayingView = findViewById(R.id.now_playing); + } + catch (Exception exception) { + Timber.w(exception, "An exception has occurred while trying to get the nowPlayingView by findViewById"); + } + } + } + public void showNowPlaying() { this.runOnUiThread(new Runnable() @@ -260,8 +276,6 @@ public class SubsonicTabActivity extends ResultActivity implements OnClickListen return null; } - nowPlayingView = findViewById(R.id.now_playing); - if (nowPlayingView != null) { PlayerState playerState = mediaPlayerControllerLazy.getValue().getPlayerState(); @@ -307,11 +321,6 @@ public class SubsonicTabActivity extends ResultActivity implements OnClickListen return; } - if (nowPlayingView == null) - { - nowPlayingView = findViewById(R.id.now_playing); - } - if (nowPlayingView != null) { try @@ -407,11 +416,6 @@ public class SubsonicTabActivity extends ResultActivity implements OnClickListen { try { - if (nowPlayingView == null) - { - nowPlayingView = findViewById(R.id.now_playing); - } - if (nowPlayingView != null) { setVisibilityOnUiThread(nowPlayingView, View.GONE); diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/EntryByDiscAndTrackComparator.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/EntryByDiscAndTrackComparator.java index 3ec2a8c6..bc24dfa6 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/EntryByDiscAndTrackComparator.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/EntryByDiscAndTrackComparator.java @@ -18,6 +18,8 @@ public class EntryByDiscAndTrackComparator implements ComparatorChargement… Une erreur réseau est survenue. Veuillez vérifier l\'adresse du serveur ou réessayer plus tard. + L’API v%1$s du serveur ne supporte pas cette fonction. Cette application requiert un accès au réseau. Veuillez activer le Wi-Fi ou le réseau mobile. Ressources introuvables. Veuillez vérifier l\'adresse du serveur. Réponse incorrecte. Veuillez vérifier l\'adresse du serveur. @@ -313,6 +314,8 @@ Dossier de niveau supérieur devient le nom de l\'artiste de l\'album Naviguer en utilisant ID3 Tags Utiliser ID3 tag à la place du système de fichier basique + Afficher l’image de l’artiste dans la liste + Affiche l’image de l’artiste dans la liste des artistes si celle-ci est disponible Vidéo Lecteur vidéo Actualisation de la vue @@ -382,6 +385,8 @@ Ajouter une nouvelle entrée de l\'affichage de l\'artiste pour accéder à toutes les titres pour un artiste Afficher l\'artiste Scan Media After Download + Balayer automatiquement les médias après téléchargement + Chargements d’images simultanés 1 2 3 @@ -394,7 +399,59 @@ 10 11 12 + albumArt + Années multiples + Reprendre lorsqu’un appareil Bluetooth se connecte + Mettre en pause lorsqu’un appareil Bluetooth se déconnecte + Tous les appareils Bluetooth + Seulement les appareils audio (A2DP) + Désactivé + Bouton unique Lecture/Pause en Bluetooth + Activer cela peut aider sur les anciens appareils Bluetooth lorsque Lecture/Pause ne fonctionne pas correctement + Paramètres de debug + Enregistrer les logs de debug dans des fichiers + Les fichiers de log sont disponibles dans %1$s/%2$s + Il y a %1$s fichiers de logs prenant %2$s MB d’espace dans le répertoire %3$s. Souhaitez-vous les conserver ? + Conserver les fichiers + Supprimer les fichiers + Fichiers de log supprimés + + Ultrasonic ne peut pas accéder au cache. Le répertoire de cache a été réinitialisé sur le chemin par défaut. + Attention + Ultrasonic requiert les droits de lecture/écriture sur le répertoire de cache. Le répertoire de cache a été réinitialisé sur le chemin par défaut. + Demande de permission + Ultrasonic requiert les droits de lecture/écriture sur le répertoire de cache. Veuillez autoriser Ultrasonic à accéder au système de fichiers. + Permissions refusées de manière permanente + Ultrasonic requiert les droits de lecture/écriture sur le répertoire de cache. Vous pouvez les activer dans les paramètres Android de l’application. Si vous rejetez cette permission, le répertoire par défaut sera utilisé pour le cache. + Ouvrir les paramètres + Afin de pouvoir modifier le répertoire de cache, Ultrasonic requiert les droits de lecture/écriture sur le système de fichiers. + + Sélectionner un dossier + Créer un dossier + Impossible de créer un dossier + %1$s (Interne) + Répertoire par défaut de l’application : %1$s (Mémoire externe) + Saisir le nom du dossier + Créer + Veuillez entrer un nom de dossier valide + Ce dossier existe déjà.\nVeuillez donner un autre nom + Sélectionner + Utiliser la valeur par défaut + Emplacements de stockage disponibles : + + Serveurs configurés + Êtes-vous sûr de vouloir supprimer ce serveur ? + Édition du serveur Ajouter un serveur + Êtes-vous sûr de vouloir quitter et perdre vos modifications ? + Ce champ est requis + Éditer + Supprimer + Déplacer vers le haut + Déplacer vers le bas + Authentification + Paramètres avancés + %d titre %d titres @@ -403,6 +460,10 @@ %d titre sélectionnée pour être épinglé. %d titres sélectionnée pour être épinglé. + + 1 titre sélectionné pour être téléchargé. + %d titres sélectionnés pour être téléchargés. + %d titre sélectionné pour être dégoupillé. %d titres sélectionnés pour être dégoupillé.