diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt
index 9f029926..c770efe4 100644
--- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt
+++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt
@@ -29,7 +29,6 @@ import androidx.preference.PreferenceManager
import com.google.android.material.navigation.NavigationView
import org.koin.android.ext.android.inject
import org.koin.androidx.viewmodel.ext.android.viewModel
-import org.koin.java.KoinJavaComponent.inject
import org.moire.ultrasonic.R
import org.moire.ultrasonic.data.ActiveServerProvider
import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline
@@ -151,7 +150,12 @@ class NavigationActivity : AppCompatActivity() {
showWelcomeScreen = showWelcomeScreen and !areServersMigrated
loadSettings()
- showInfoDialog(showWelcomeScreen)
+
+ // This is a first run with only the demo entry inside the database
+ // We set the active server to the demo one and show the welcome dialog
+ if (showWelcomeScreen) {
+ showWelcomeDialog()
+ }
nowPlayingEventListener = object : NowPlayingEventListener {
override fun onDismissNowPlaying() {
@@ -313,19 +317,27 @@ class NavigationActivity : AppCompatActivity() {
finish()
}
- private fun showInfoDialog(show: Boolean) {
+ private fun showWelcomeDialog() {
if (!infoDialogDisplayed) {
infoDialogDisplayed = true
- if (show) {
- AlertDialog.Builder(this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle(R.string.main_welcome_title)
- .setMessage(R.string.main_welcome_text)
- .setPositiveButton(R.string.common_ok) { dialog, _ ->
- dialog.dismiss()
- findNavController(R.id.nav_host_fragment).navigate(R.id.settingsFragment)
- }.show()
- }
+
+ AlertDialog.Builder(this)
+ .setIcon(android.R.drawable.ic_dialog_info)
+ .setTitle(R.string.main_welcome_title)
+ .setMessage(R.string.main_welcome_text_demo)
+ .setNegativeButton(R.string.main_welcome_cancel) { dialog, _ ->
+ // Go to the settings screen
+ dialog.dismiss()
+ findNavController(R.id.nav_host_fragment).navigate(R.id.settingsFragment)
+ }
+ .setPositiveButton(R.string.common_ok) { dialog, _ ->
+ // Add the demo server
+ val activeServerProvider: ActiveServerProvider by inject()
+ val demoIndex = serverSettingsModel.addDemoServer()
+ activeServerProvider.setActiveServerByIndex(demoIndex)
+ findNavController(R.id.nav_host_fragment).navigate(R.id.mainFragment)
+ dialog.dismiss()
+ }.show()
}
}
diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/AppPermanentStorageModule.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/AppPermanentStorageModule.kt
index 1b430ae1..0758ade8 100644
--- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/AppPermanentStorageModule.kt
+++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/di/AppPermanentStorageModule.kt
@@ -12,6 +12,7 @@ import org.moire.ultrasonic.fragment.ServerSettingsModel
import org.moire.ultrasonic.util.Util
const val SP_NAME = "Default_SP"
+const val DB_FILENAME = "ultrasonic-database"
/**
* This Koin module contains registration of classes related to permanent storage
@@ -23,11 +24,10 @@ val appPermanentStorage = module {
Room.databaseBuilder(
androidContext(),
AppDatabase::class.java,
- "ultrasonic-database"
+ DB_FILENAME
)
.addMigrations(MIGRATION_1_2)
.addMigrations(MIGRATION_2_3)
- .fallbackToDestructiveMigrationOnDowngrade()
.build()
}
diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ServerSettingsModel.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ServerSettingsModel.kt
index af33133c..ad8499bf 100644
--- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ServerSettingsModel.kt
+++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/ServerSettingsModel.kt
@@ -11,6 +11,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
+import org.moire.ultrasonic.R
+import org.moire.ultrasonic.app.UApp
import org.moire.ultrasonic.data.ActiveServerProvider
import org.moire.ultrasonic.data.ServerSetting
import org.moire.ultrasonic.data.ServerSettingDao
@@ -25,20 +27,6 @@ class ServerSettingsModel(
application: Application
) : AndroidViewModel(application) {
- companion object {
- private const val PREFERENCES_KEY_SERVER_MIGRATED = "serverMigrated"
- // These constants were removed from Constants.java as they are deprecated and only used here
- private const val PREFERENCES_KEY_JUKEBOX_BY_DEFAULT = "jukeboxEnabled"
- private const val PREFERENCES_KEY_SERVER_NAME = "serverName"
- private const val PREFERENCES_KEY_SERVER_URL = "serverUrl"
- private const val PREFERENCES_KEY_ACTIVE_SERVERS = "activeServers"
- private const val PREFERENCES_KEY_USERNAME = "username"
- private const val PREFERENCES_KEY_PASSWORD = "password"
- private const val PREFERENCES_KEY_ALLOW_SELF_SIGNED_CERTIFICATE = "allowSSCertificate"
- private const val PREFERENCES_KEY_LDAP_SUPPORT = "enableLdapSupport"
- private const val PREFERENCES_KEY_MUSIC_FOLDER_ID = "musicFolderId"
- }
-
private val appScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
/**
@@ -67,8 +55,8 @@ class ServerSettingsModel(
repository.insert(newServerSetting)
index++
Timber.i(
- "Imported server from Preferences to Database:" +
- " ${newServerSetting.name}"
+ "Imported server from Preferences to Database: %s",
+ newServerSetting.name
)
}
}
@@ -187,6 +175,23 @@ class ServerSettingsModel(
}
}
+ /**
+ * Inserts a new Setting into the database
+ * @return The id of the demo server
+ */
+ fun addDemoServer(): Int {
+ val demo = DEMO_SERVER_CONFIG.copy()
+
+ runBlocking {
+ demo.index = (repository.count() ?: 0) + 1
+ demo.id = (repository.getMaxId() ?: 0) + 1
+ repository.insert(demo)
+ Timber.d("Added demo server")
+ }
+
+ return demo.id
+ }
+
/**
* Reads up a Server Setting stored in the obsolete Preferences
*/
@@ -262,4 +267,36 @@ class ServerSettingsModel(
editor.putBoolean(PREFERENCES_KEY_SERVER_MIGRATED + preferenceId, true)
editor.apply()
}
+
+ companion object {
+ private const val PREFERENCES_KEY_SERVER_MIGRATED = "serverMigrated"
+ // These constants were removed from Constants.java as they are deprecated and only used here
+ private const val PREFERENCES_KEY_JUKEBOX_BY_DEFAULT = "jukeboxEnabled"
+ private const val PREFERENCES_KEY_SERVER_NAME = "serverName"
+ private const val PREFERENCES_KEY_SERVER_URL = "serverUrl"
+ private const val PREFERENCES_KEY_ACTIVE_SERVERS = "activeServers"
+ private const val PREFERENCES_KEY_USERNAME = "username"
+ private const val PREFERENCES_KEY_PASSWORD = "password"
+ private const val PREFERENCES_KEY_ALLOW_SELF_SIGNED_CERTIFICATE = "allowSSCertificate"
+ private const val PREFERENCES_KEY_LDAP_SUPPORT = "enableLdapSupport"
+ private const val PREFERENCES_KEY_MUSIC_FOLDER_ID = "musicFolderId"
+
+ private val DEMO_SERVER_CONFIG = ServerSetting(
+ id = 0,
+ index = 0,
+ name = UApp.applicationContext().getString(R.string.server_menu_demo),
+ url = "https://demo.ampache.dev",
+ userName = "ultrasonic_demo",
+ password = "W7DumQ3ZUR89Se3",
+ jukeboxByDefault = false,
+ allowSelfSignedCertificate = false,
+ ldapSupport = false,
+ musicFolderId = null,
+ minimumApiVersion = "1.13.0",
+ chatSupport = true,
+ bookmarkSupport = true,
+ shareSupport = true,
+ podcastSupport = true
+ )
+ }
}
diff --git a/ultrasonic/src/main/res/values-cs/strings.xml b/ultrasonic/src/main/res/values-cs/strings.xml
index 58944209..644962e5 100644
--- a/ultrasonic/src/main/res/values-cs/strings.xml
+++ b/ultrasonic/src/main/res/values-cs/strings.xml
@@ -101,7 +101,6 @@
Označené hvězdičkou
Skladby
Videa
- Vítejte v aplikaci Ultrasonic! Aplikace není ještě nakonfigurována. Poté co nastavíte svůj osobní server (dostupný na subsonic.org), vyberte Správa serverů v Nastavení a připojte aplikaci.
Vítejte!
O aplikaci
Další
diff --git a/ultrasonic/src/main/res/values-de/strings.xml b/ultrasonic/src/main/res/values-de/strings.xml
index 08208b9f..6e556e71 100644
--- a/ultrasonic/src/main/res/values-de/strings.xml
+++ b/ultrasonic/src/main/res/values-de/strings.xml
@@ -100,7 +100,6 @@
Mit Stern
Titel
Filme
- Willkommen bei Ultrasonic! Die App ist zurzeit unkonfiguriert. Nachdem du deinen Server konfiguriert hast (siehe subsonic.org), bitte Server hinzufügen in den Einstellungen klicken um die Verbindun herzustellen.
Willkommen
Über
Allgemein
diff --git a/ultrasonic/src/main/res/values-es/strings.xml b/ultrasonic/src/main/res/values-es/strings.xml
index 9b494b2b..4ba33dc7 100644
--- a/ultrasonic/src/main/res/values-es/strings.xml
+++ b/ultrasonic/src/main/res/values-es/strings.xml
@@ -111,7 +111,6 @@
Me gusta
Canciones
Vídeos
- Te damos la bienvenida a Ultrasonic! La aplicación no está configurada actualmente. Después de que hayas configurado tu servidor personal (disponible desde subsonic.org), por favor haz click en Administrar servidores en Configuración para conectarte con él.
¡Saludos!
Acerca de
Común
diff --git a/ultrasonic/src/main/res/values-fr/strings.xml b/ultrasonic/src/main/res/values-fr/strings.xml
index ad640ff7..0353ff31 100644
--- a/ultrasonic/src/main/res/values-fr/strings.xml
+++ b/ultrasonic/src/main/res/values-fr/strings.xml
@@ -101,7 +101,6 @@
Favoris
Titres
Vidéos
- Bienvenue dans Ultrasonic ! L\'application n\'est pas configurée. Après avoir configuré votre serveur personnel (disponible à partir de subsonic.org), veuillez accéder aux Paramètres et modifier la configuration pour vous y connecter.
Bienvenue !
À propos
Général
diff --git a/ultrasonic/src/main/res/values-hu/strings.xml b/ultrasonic/src/main/res/values-hu/strings.xml
index ffdf144a..ebdc58e8 100644
--- a/ultrasonic/src/main/res/values-hu/strings.xml
+++ b/ultrasonic/src/main/res/values-hu/strings.xml
@@ -111,7 +111,6 @@
Csillaggal megjelölt
Dalok
Videók
- Üdvözli az Ultrasonic! Az alkalmazás még nincs beállítva. Miután konfigurálta saját kiszolgálóját (elérhető: subsonic.org), húzza balról jobbra az oldalsávot, lépjen be a Beállítások menüpontba, és adja meg csatlakozási adatokat!
Üdvözlet!
Névjegy
Általános
diff --git a/ultrasonic/src/main/res/values-nl/strings.xml b/ultrasonic/src/main/res/values-nl/strings.xml
index 445bfaf4..05e97354 100644
--- a/ultrasonic/src/main/res/values-nl/strings.xml
+++ b/ultrasonic/src/main/res/values-nl/strings.xml
@@ -111,7 +111,6 @@
Favorieten
Nummers
Video\'s
- Welkom bij Ultrasonic! De app is nog niet ingesteld. Nadat je je persoonlijke server hebt opgezet (beschikbaar op subsonic.org), kun je naar de Instellingen gaan en drukken op Server toevoegen.
Welkom!
Over
Algemeen
diff --git a/ultrasonic/src/main/res/values-pl/strings.xml b/ultrasonic/src/main/res/values-pl/strings.xml
index d127a8aa..78588a60 100644
--- a/ultrasonic/src/main/res/values-pl/strings.xml
+++ b/ultrasonic/src/main/res/values-pl/strings.xml
@@ -100,7 +100,6 @@
Ulubione
Utwory
Klipy wideo
- Witaj w Ultrasonic! Obecnie aplikacja nie jest skonfigurowana. Jeśli masz uruchomiony własny serwer (dostępny na subsonic.org), proszę wybrać Dodaj serwer w Ustawieniach aby się z nim połączyć.
Witaj!
O aplikacji
Wspólne
diff --git a/ultrasonic/src/main/res/values-pt-rBR/strings.xml b/ultrasonic/src/main/res/values-pt-rBR/strings.xml
index b9683c7a..8e418d39 100644
--- a/ultrasonic/src/main/res/values-pt-rBR/strings.xml
+++ b/ultrasonic/src/main/res/values-pt-rBR/strings.xml
@@ -101,7 +101,6 @@
Favoritas
Músicas
Vídeos
- Bem-vindo ao Ultrasonic! O aplicativo ainda não está configurado. Após configurar seu servidor pessoal (disponível em subsonic.org), clique em Adicionar Servidor em Configurações para a conexão.
Bem-vindo!
Sobre
Comum
diff --git a/ultrasonic/src/main/res/values-pt/strings.xml b/ultrasonic/src/main/res/values-pt/strings.xml
index 2687127d..2ff02ba4 100644
--- a/ultrasonic/src/main/res/values-pt/strings.xml
+++ b/ultrasonic/src/main/res/values-pt/strings.xml
@@ -100,7 +100,6 @@
Favoritas
Músicas
Vídeos
- Bem-vindo ao Ultrasonic! O aplicativo ainda não está configurado. Após configurar seu servidor pessoal (disponível em subsonic.org), clique em Adicionar Servidor em Configurações para a conexão.
Bem-vindo!
Sobre
Comum
diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml
index 04cd961d..4daeda54 100644
--- a/ultrasonic/src/main/res/values/strings.xml
+++ b/ultrasonic/src/main/res/values/strings.xml
@@ -111,8 +111,9 @@
Starred
Songs
Videos
- Welcome to Ultrasonic! The app is currently not configured. After you\'ve set up your personal server (available from subsonic.org), please click Manage Servers in Settings to connect to it.
- Welcome!
+ To use Ultrasonic with your own music you will need your own server. \n\n➤ In case you want to try out the app first, it can add a demo server now. \n\n➤ Otherwise you can configure your server in the settings.
+ Welcome to Ultrasonic!
+ Take me to the settings
About
Common
Deleted playlist %s
@@ -342,7 +343,7 @@
0.00 GB
0 KB
0.00 MB
- -:--
+ -:--
0:00
Touch to select music
SD card unavailable
@@ -438,6 +439,7 @@
Authentication
Advanced settings
One or more features were disabled because the server doesn\'t support them.\nYou can run this test again anytime.
+ Demo Server
- 1 song
diff --git a/ultrasonic/src/main/res/xml/settings.xml b/ultrasonic/src/main/res/xml/settings.xml
index c1da757a..46ad73b9 100644
--- a/ultrasonic/src/main/res/xml/settings.xml
+++ b/ultrasonic/src/main/res/xml/settings.xml
@@ -70,13 +70,13 @@
a:key="playbackControlSettings"
app:iconSpaceReserved="false">