2019-06-05 16:05:10 +02:00
package org.hso.texturesyncclient.controller
import java.io.*
2019-06-05 16:31:10 +02:00
import java.util.Properties
2019-06-05 16:05:10 +02:00
class SettingsController {
companion object {
private lateinit var serverAddress : String
private lateinit var props : Properties
private val userHome = System . getProperty ( " user.home " )
private val osName = System . getProperty ( " os.name " )
private lateinit var dirPath : String //path to settings file
private lateinit var settingsFile : File //settings file
2019-06-05 16:31:10 +02:00
private const val defaultAddressValue : String = " "
2019-06-05 16:05:10 +02:00
fun init ( ) {
props = Properties ( )
2019-06-05 16:31:10 +02:00
dirPath = if ( osName . contains ( " Windows " ) ) {
" $userHome /Documents/TextureSync "
2019-06-05 16:05:10 +02:00
} else {
2019-06-12 13:28:03 +02:00
" $userHome /.config/TextureSync "
2019-06-05 16:05:10 +02:00
}
2019-06-05 16:31:10 +02:00
settingsFile = File ( " $dirPath /config.xml " ) //open Settings file
2019-06-05 16:05:10 +02:00
if ( ! settingsFile . exists ( ) ) {
println ( " settings not found! Will create new one " )
File ( dirPath ) . mkdir ( )
settingsFile . createNewFile ( )
2019-06-05 16:31:10 +02:00
serverAddress = defaultAddressValue //load default value
2019-06-05 16:05:10 +02:00
saveSettings ( )
} else {
println ( " settings found " )
loadSettings ( )
}
}
fun serverAddressIsSet ( ) : Boolean {
2019-06-05 16:31:10 +02:00
if ( serverAddress == defaultAddressValue ) {
2019-06-05 16:05:10 +02:00
return false
}
return true
}
private fun loadSettings ( ) {
val inputStream : InputStream
2019-06-05 16:31:10 +02:00
inputStream = FileInputStream ( settingsFile )
props . loadFromXML ( inputStream )
2019-06-05 16:05:10 +02:00
serverAddress = props . getProperty ( " serverAddress " )
2019-06-05 16:31:10 +02:00
inputStream . close ( )
2019-06-05 16:05:10 +02:00
}
private fun saveSettings ( ) {
val outputStream : OutputStream
2019-06-05 16:31:10 +02:00
props . setProperty ( " serverAddress " , serverAddress )
outputStream = FileOutputStream ( settingsFile )
props . storeToXML ( outputStream , " TextureSync settings " )
outputStream . close ( )
2019-06-05 16:05:10 +02:00
println ( " settings saved " )
}
fun getServerAddress ( ) : String {
2019-06-05 16:31:10 +02:00
return serverAddress
2019-06-05 16:05:10 +02:00
}
fun setServerAddress ( serverAddress : String ) {
this . serverAddress = serverAddress
saveSettings ( )
}
}
}