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)
20 loadStrictFiltering(configuration)
23 private fun loadInsertionDelay(configuration: Configuration) {
24 preferences.newInsertionDelay = configuration.getIntValue("Option/InsertionDelay").getValue(null)
27 private fun loadPostsPerPage(configuration: Configuration) {
28 preferences.newPostsPerPage = configuration.getIntValue("Option/PostsPerPage").getValue(null)
31 private fun loadImagesPerPage(configuration: Configuration) {
32 preferences.newImagesPerPage = configuration.getIntValue("Option/ImagesPerPage").getValue(null)
35 private fun loadCharactersPerPost(configuration: Configuration) {
36 preferences.newCharactersPerPost = configuration.getIntValue("Option/CharactersPerPost").getValue(null)
39 private fun loadPostCutOffLength(configuration: Configuration) {
41 preferences.newPostCutOffLength = configuration.getIntValue("Option/PostCutOffLength").getValue(null)
42 } catch (iae1: IllegalArgumentException) { /* previous versions allowed -1, ignore and use default. */
46 private fun loadRequireFullAccess(configuration: Configuration) {
47 preferences.newRequireFullAccess = configuration.getBooleanValue("Option/RequireFullAccess").getValue(null)
50 private fun loadFcpInterfaceActive(configuration: Configuration) {
51 preferences.newFcpInterfaceActive = configuration.getBooleanValue("Option/ActivateFcpInterface").getValue(null)
54 private fun loadFcpFullAccessRequired(configuration: Configuration) {
55 val fullAccessRequiredInteger = configuration.getIntValue("Option/FcpFullAccessRequired").getValue(null)
56 preferences.newFcpFullAccessRequired = fullAccessRequiredInteger?.let { FullAccessRequired.values()[it] }
59 private fun loadStrictFiltering(configuration: Configuration) {
60 preferences.newStrictFiltering = configuration.getBooleanValue("Option/StrictFiltering").getValue(null)