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 55ba92ac..cf782340 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 aab075fe..cd69a241 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 35192166..14d90c1c 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 5bc3b7b7..94a63970 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 5476f2c3..41490785 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 9cd9fd00..8d5ee1a3 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 4f7b15d1..1eee490b 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 903d7b6a..e4a8bdbf 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 8fb5bb12..f4919701 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 62556828..3ed173d2 100644
--- a/ultrasonic/src/main/res/values/strings.xml
+++ b/ultrasonic/src/main/res/values/strings.xml
@@ -1,5 +1,5 @@
-
+
Loading…
A network error occurred. Please check the server address or try again later.
@@ -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
@@ -348,7 +349,7 @@
0.00 GB
0 KB
0.00 MB
- -:--
+ -:--
0:00
MX Player is not installed. Get it for free on Play Store, or change video settings.
Get MX Player
@@ -449,6 +450,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 ce724706..bb25965a 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">