1 package net.pterodactylus.sone.core
3 import net.pterodactylus.sone.fcp.FcpInterface.*
4 import net.pterodactylus.util.config.*
7 * Loads preferences stored in a [Configuration] into a [Preferences] object.
9 class PreferencesLoader(private val preferences: Preferences) {
11 fun loadFrom(configuration: Configuration) {
12 loadInsertionDelay(configuration)
13 loadPostsPerPage(configuration)
14 loadImagesPerPage(configuration)
15 loadCharactersPerPost(configuration)
16 loadPostCutOffLength(configuration)
17 loadRequireFullAccess(configuration)
18 loadFcpInterfaceActive(configuration)
19 loadFcpFullAccessRequired(configuration)
22 private fun loadInsertionDelay(configuration: Configuration) {
23 preferences.newInsertionDelay = configuration.getIntValue("Option/InsertionDelay").getValue(null)
26 private fun loadPostsPerPage(configuration: Configuration) {
27 preferences.newPostsPerPage = configuration.getIntValue("Option/PostsPerPage").getValue(null)
30 private fun loadImagesPerPage(configuration: Configuration) {
31 preferences.newImagesPerPage = configuration.getIntValue("Option/ImagesPerPage").getValue(null)
34 private fun loadCharactersPerPost(configuration: Configuration) {
35 preferences.newCharactersPerPost = configuration.getIntValue("Option/CharactersPerPost").getValue(null)
38 private fun loadPostCutOffLength(configuration: Configuration) {
40 preferences.newPostCutOffLength = configuration.getIntValue("Option/PostCutOffLength").getValue(null)
41 } catch (iae1: IllegalArgumentException) { /* previous versions allowed -1, ignore and use default. */
45 private fun loadRequireFullAccess(configuration: Configuration) {
46 preferences.newRequireFullAccess = configuration.getBooleanValue("Option/RequireFullAccess").getValue(null)
49 private fun loadFcpInterfaceActive(configuration: Configuration) {
50 preferences.newFcpInterfaceActive = configuration.getBooleanValue("Option/ActivateFcpInterface").getValue(null)
53 private fun loadFcpFullAccessRequired(configuration: Configuration) {
54 val fullAccessRequiredInteger = configuration.getIntValue("Option/FcpFullAccessRequired").getValue(null)
55 preferences.newFcpFullAccessRequired = fullAccessRequiredInteger?.let { FullAccessRequired.values()[it] }