Force 3-characters wide spacing and refactor & reformat code accordingly to the new rules

This commit is contained in:
2020-05-10 17:21:28 +02:00
parent 76ed48eaf3
commit b0b1ca994f
14 changed files with 427 additions and 425 deletions

View File

@@ -3,6 +3,12 @@
<JetCodeStyleSettings> <JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings> </JetCodeStyleSettings>
<codeStyleSettings language="JAVA">
<indentOptions>
<option name="INDENT_SIZE" value="3" />
<option name="TAB_SIZE" value="3" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="XML"> <codeStyleSettings language="XML">
<indentOptions> <indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" /> <option name="CONTINUATION_INDENT_SIZE" value="4" />
@@ -117,6 +123,10 @@
</codeStyleSettings> </codeStyleSettings>
<codeStyleSettings language="kotlin"> <codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
<indentOptions>
<option name="INDENT_SIZE" value="3" />
<option name="TAB_SIZE" value="3" />
</indentOptions>
</codeStyleSettings> </codeStyleSettings>
</code_scheme> </code_scheme>
</component> </component>

View File

@@ -1,13 +1,11 @@
package io.bartek package io.bartek
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.Assert.*
/** /**
* Instrumented test, which will execute on an Android device. * Instrumented test, which will execute on an Android device.
* *

View File

@@ -20,18 +20,14 @@ import io.bartek.service.ServiceState
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
private lateinit var controlServerButton: AppCompatImageButton private lateinit var serverControlButton: AppCompatImageButton
private lateinit var promptText: TextView private lateinit var promptText: TextView
private val receiver = object : BroadcastReceiver() { private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
intent?.let { (intent?.getStringExtra(ForegroundService.STATE) ?: ServiceState.STOPPED.name)
updateViewAccordingToServiceState( .let { ServiceState.valueOf(it) }
ServiceState.valueOf( .let { updateViewAccordingToServiceState(it) }
it.getStringExtra(ForegroundService.STATE) ?: ServiceState.STOPPED.name
)
)
}
} }
} }
@@ -50,14 +46,14 @@ class MainActivity : AppCompatActivity() {
} }
private fun updateViewAccordingToServiceState(newState: ServiceState) { private fun updateViewAccordingToServiceState(newState: ServiceState) {
controlServerButton.isEnabled = true serverControlButton.isEnabled = true
when (newState) { when (newState) {
ServiceState.STOPPED -> { ServiceState.STOPPED -> {
controlServerButton.setImageResource(R.drawable.ic_power_off) serverControlButton.setImageResource(R.drawable.ic_power_off)
promptText.text = getString(R.string.main_activity_prompt_to_run) promptText.text = getString(R.string.main_activity_prompt_to_run)
} }
ServiceState.RUNNING -> { ServiceState.RUNNING -> {
controlServerButton.setImageResource(R.drawable.ic_power_on) serverControlButton.setImageResource(R.drawable.ic_power_on)
promptText.text = getString(R.string.main_activity_prompt_to_stop) promptText.text = getString(R.string.main_activity_prompt_to_stop)
} }
} }
@@ -66,7 +62,7 @@ class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
controlServerButton = findViewById(R.id.control_server_button) serverControlButton = findViewById(R.id.server_control_button)
promptText = findViewById(R.id.prompt_text) promptText = findViewById(R.id.prompt_text)
} }
@@ -86,7 +82,7 @@ class MainActivity : AppCompatActivity() {
} }
fun controlServer(view: View) { fun controlServer(view: View) {
controlServerButton.isEnabled = false serverControlButton.isEnabled = false
when (ForegroundService.state) { when (ForegroundService.state) {
ServiceState.STOPPED -> actionOnService(ForegroundService.START) ServiceState.STOPPED -> actionOnService(ForegroundService.START)
ServiceState.RUNNING -> actionOnService(ForegroundService.STOP) ServiceState.RUNNING -> actionOnService(ForegroundService.STOP)

View File

@@ -3,7 +3,6 @@ package io.bartek.preference
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import androidx.preference.EditTextPreference import androidx.preference.EditTextPreference
import java.lang.Integer.parseInt
class IntEditTextPreference : EditTextPreference { class IntEditTextPreference : EditTextPreference {
constructor( constructor(
@@ -23,10 +22,12 @@ class IntEditTextPreference : EditTextPreference {
constructor(context: Context?) : super(context) constructor(context: Context?) : super(context)
override fun getPersistedString(defaultReturnValue: String?) = override fun getPersistedString(defaultReturnValue: String?) = (defaultReturnValue ?: "-1")
getPersistedInt(Integer.valueOf(defaultReturnValue ?: "-1")).toString() .let { Integer.valueOf(it) }
.let { getPersistedInt(it) }
override fun persistString(value: String?) = persistInt(Integer.valueOf(value ?: "-1")) .toString()
override fun persistString(value: String?) = (value ?: "-1")
.let { Integer.valueOf(it) }
.let { persistInt(it) }
} }

View File

@@ -22,13 +22,9 @@ class PreferencesFragment : PreferenceFragmentCompat() {
private val receiver = object : BroadcastReceiver() { private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
intent?.let { (intent?.getStringExtra(ForegroundService.STATE) ?: ServiceState.STOPPED.name)
updateViewAccordingToServiceState( .let { ServiceState.valueOf(it) }
ServiceState.valueOf( .let { updateViewAccordingToServiceState(it) }
it.getStringExtra(ForegroundService.STATE) ?: ServiceState.STOPPED.name
)
)
}
} }
} }

View File

@@ -17,10 +17,7 @@ class ForegroundNotificationFactory(private val context: Context) {
fun createForegroundNotification(port: Int): Notification { fun createForegroundNotification(port: Int): Notification {
createNotificationChannel() createNotificationChannel()
return buildNotification(port, createPendingIntent())
val pendingIntent = createPendingIntent()
return buildNotification(port, pendingIntent)
} }
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
@@ -30,7 +27,7 @@ class ForegroundNotificationFactory(private val context: Context) {
.setContentText(context.resources.getString(R.string.service_notification_text, port)) .setContentText(context.resources.getString(R.string.service_notification_text, port))
.setContentIntent(pendingIntent) .setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.ic_foreground_service) .setSmallIcon(R.drawable.ic_foreground_service)
.setTicker(context.getString(R.string.service_notification_text)) .setTicker(context.getString(R.string.service_notification_text, port))
.setPriority(Notification.PRIORITY_HIGH) // for under android 26 compatibility .setPriority(Notification.PRIORITY_HIGH) // for under android 26 compatibility
.build() .build()

View File

@@ -1,5 +1,6 @@
package io.bartek.service package io.bartek.service
import android.annotation.SuppressLint
import android.app.Service import android.app.Service
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@@ -7,18 +8,19 @@ import android.content.SharedPreferences
import android.os.PowerManager import android.os.PowerManager
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import io.bartek.preference.PreferenceKey import io.bartek.preference.PreferenceKey
import io.bartek.web.TTSServer import io.bartek.web.WebServer
class ForegroundService : Service() { class ForegroundService : Service() {
private lateinit var preferences: SharedPreferences private lateinit var preferences: SharedPreferences
private var wakeLock: PowerManager.WakeLock? = null private var wakeLock: PowerManager.WakeLock? = null
private var isServiceStarted = false private var isServiceStarted = false
private var ttsServer: TTSServer? = null private var webServer: WebServer? = null
private val port: Int private val port: Int
get() = preferences.getInt(PreferenceKey.PORT, 8080) get() = preferences.getInt(PreferenceKey.PORT, 8080)
private val notificationFactory = ForegroundNotificationFactory(this) private val notificationFactory = ForegroundNotificationFactory(this)
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
preferences = PreferenceManager.getDefaultSharedPreferences(this) preferences = PreferenceManager.getDefaultSharedPreferences(this)
@@ -39,9 +41,10 @@ class ForegroundService : Service() {
} }
override fun onDestroy() { override fun onDestroy() {
ttsServer = null webServer = null
} }
@SuppressLint("WakelockTimeout")
private fun startService() { private fun startService() {
if (isServiceStarted) return if (isServiceStarted) return
isServiceStarted = true isServiceStarted = true
@@ -51,13 +54,13 @@ class ForegroundService : Service() {
acquire() acquire()
} }
} }
ttsServer = TTSServer(port, this) webServer = WebServer(port, this)
state = ServiceState.RUNNING state = ServiceState.RUNNING
} }
private fun stopService() { private fun stopService() {
ttsServer?.stop() webServer?.stop()
ttsServer = null webServer = null
wakeLock?.let { wakeLock?.let {
if (it.isHeld) { if (it.isHeld) {
it.release() it.release()

View File

@@ -7,7 +7,6 @@ import io.bartek.exception.TTSException
import java.io.BufferedInputStream import java.io.BufferedInputStream
import java.io.FileInputStream import java.io.FileInputStream
import java.io.InputStream import java.io.InputStream
import java.lang.RuntimeException
import java.util.* import java.util.*
data class SpeechData(val stream: InputStream, val size: Long) data class SpeechData(val stream: InputStream, val size: Long)
@@ -57,6 +56,8 @@ class TTS(context: Context, initListener: TextToSpeech.OnInitListener) {
} }
} }
@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
// TODO: Investigate the Kotlin way to achieve the same
private data class Lock(var success: Boolean = false) : Object() private data class Lock(var success: Boolean = false) : Object()
private class TTSProcessListener( private class TTSProcessListener(
@@ -72,6 +73,7 @@ private class TTSProcessListener(
} }
} }
} }
override fun onError(utteranceId: String?) { override fun onError(utteranceId: String?) {
if (utteranceId == uuid) { if (utteranceId == uuid) {
synchronized(lock) { synchronized(lock) {
@@ -82,5 +84,4 @@ private class TTSProcessListener(
} }
override fun onStart(utteranceId: String?) {} override fun onStart(utteranceId: String?) {}
} }

View File

@@ -17,7 +17,7 @@ import java.util.*
private data class TTSRequestData(val text: String, val language: Locale) private data class TTSRequestData(val text: String, val language: Locale)
class TTSServer(port: Int, private val context: Context) : NanoHTTPD(port), class WebServer(port: Int, private val context: Context) : NanoHTTPD(port),
TextToSpeech.OnInitListener { TextToSpeech.OnInitListener {
private val preferences = PreferenceManager.getDefaultSharedPreferences(context) private val preferences = PreferenceManager.getDefaultSharedPreferences(context)
private val tts = TTS(context, this) private val tts = TTS(context, this)

View File

@@ -16,7 +16,7 @@
android:textAlignment="center" /> android:textAlignment="center" />
<ImageButton <ImageButton
android:id="@+id/control_server_button" android:id="@+id/server_control_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#00000000" android:background="#00000000"