chore: change applicationId/package to solutions.tretter.mindmachine
This commit is contained in:
@@ -4,11 +4,11 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "com.mindmachine.mvp"
|
namespace = "solutions.tretter.mindmachine"
|
||||||
compileSdk = 35
|
compileSdk = 35
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "com.mindmachine.mvp"
|
applicationId = "solutions.tretter.mindmachine"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 5
|
versionCode = 5
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.pm.ActivityInfo
|
import android.content.pm.ActivityInfo
|
||||||
@@ -9,8 +9,8 @@ import androidx.activity.compose.BackHandler
|
|||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import com.mindmachine.mvp.session.DurationSliderCard
|
import solutions.tretter.mindmachine.session.DurationSliderCard
|
||||||
import com.mindmachine.mvp.session.SetupTimelineEditor
|
import solutions.tretter.mindmachine.session.SetupTimelineEditor
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.gestures.detectTapGestures
|
import androidx.compose.foundation.gestures.detectTapGestures
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
@@ -98,24 +98,24 @@ import androidx.navigation.compose.composable
|
|||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import androidx.navigation.navArgument
|
import androidx.navigation.navArgument
|
||||||
import com.google.android.gms.ads.MobileAds
|
import com.google.android.gms.ads.MobileAds
|
||||||
import com.mindmachine.mvp.audio.BinauralAudioEngine
|
import solutions.tretter.mindmachine.audio.BinauralAudioEngine
|
||||||
import com.mindmachine.mvp.audio.HeadsetMonitor
|
import solutions.tretter.mindmachine.audio.HeadsetMonitor
|
||||||
import com.mindmachine.mvp.ads.AdBanner
|
import solutions.tretter.mindmachine.ads.AdBanner
|
||||||
import com.mindmachine.mvp.ads.rememberInterstitialController
|
import solutions.tretter.mindmachine.ads.rememberInterstitialController
|
||||||
import com.mindmachine.mvp.data.SettingsRepository
|
import solutions.tretter.mindmachine.data.SettingsRepository
|
||||||
import com.mindmachine.mvp.data.UserProgramRepository
|
import solutions.tretter.mindmachine.data.UserProgramRepository
|
||||||
import com.mindmachine.mvp.domain.RuntimeState
|
import solutions.tretter.mindmachine.domain.RuntimeState
|
||||||
import com.mindmachine.mvp.session.FlashColor
|
import solutions.tretter.mindmachine.session.FlashColor
|
||||||
import com.mindmachine.mvp.session.MainViewModel
|
import solutions.tretter.mindmachine.session.MainViewModel
|
||||||
import com.mindmachine.mvp.session.SplitFlashFrame
|
import solutions.tretter.mindmachine.session.SplitFlashFrame
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import com.mindmachine.mvp.session.SplitFlashSequencer
|
import solutions.tretter.mindmachine.session.SplitFlashSequencer
|
||||||
import com.mindmachine.mvp.session.flashIntervalMsToSeconds
|
import solutions.tretter.mindmachine.session.flashIntervalMsToSeconds
|
||||||
import com.mindmachine.mvp.session.flashIntervalSecondsToMs
|
import solutions.tretter.mindmachine.session.flashIntervalSecondsToMs
|
||||||
import com.mindmachine.mvp.session.formatDuration
|
import solutions.tretter.mindmachine.session.formatDuration
|
||||||
import com.mindmachine.mvp.session.sessionProgressFraction
|
import solutions.tretter.mindmachine.session.sessionProgressFraction
|
||||||
import com.mindmachine.mvp.session.shouldShowActiveControlsByDefault
|
import solutions.tretter.mindmachine.session.shouldShowActiveControlsByDefault
|
||||||
import com.mindmachine.mvp.session.shouldUseImmersiveFullscreen
|
import solutions.tretter.mindmachine.session.shouldUseImmersiveFullscreen
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
@@ -142,7 +142,7 @@ private val MindMachineColors = darkColorScheme(
|
|||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
private val settingsRepo by lazy { SettingsRepository(applicationContext) }
|
private val settingsRepo by lazy { SettingsRepository(applicationContext) }
|
||||||
private val billingManager by lazy {
|
private val billingManager by lazy {
|
||||||
com.mindmachine.mvp.billing.BillingManager(
|
solutions.tretter.mindmachine.billing.BillingManager(
|
||||||
applicationContext,
|
applicationContext,
|
||||||
onNoAdsEntitlementChanged = { hasNoAds ->
|
onNoAdsEntitlementChanged = { hasNoAds ->
|
||||||
lifecycleScope.launch { settingsRepo.updateNoAds(hasNoAds) }
|
lifecycleScope.launch { settingsRepo.updateNoAds(hasNoAds) }
|
||||||
@@ -173,7 +173,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun App(vm: MainViewModel = viewModel(), billingManager: com.mindmachine.mvp.billing.BillingManager) {
|
fun App(vm: MainViewModel = viewModel(), billingManager: solutions.tretter.mindmachine.billing.BillingManager) {
|
||||||
val nav = rememberNavController()
|
val nav = rememberNavController()
|
||||||
val ui by vm.ui.collectAsStateWithLifecycle()
|
val ui by vm.ui.collectAsStateWithLifecycle()
|
||||||
val lifecycle = LocalLifecycleOwner.current.lifecycle
|
val lifecycle = LocalLifecycleOwner.current.lifecycle
|
||||||
@@ -876,7 +876,7 @@ fun SettingsScreen(vm: MainViewModel, onRemoveAds: () -> Unit) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RemoveAdsScreen(billingManager: com.mindmachine.mvp.billing.BillingManager, vm: MainViewModel) {
|
fun RemoveAdsScreen(billingManager: solutions.tretter.mindmachine.billing.BillingManager, vm: MainViewModel) {
|
||||||
val ui by vm.ui.collectAsStateWithLifecycle()
|
val ui by vm.ui.collectAsStateWithLifecycle()
|
||||||
val activity = LocalContext.current as? Activity
|
val activity = LocalContext.current as? Activity
|
||||||
val details by billingManager.productDetails.collectAsStateWithLifecycle()
|
val details by billingManager.productDetails.collectAsStateWithLifecycle()
|
||||||
@@ -898,19 +898,19 @@ fun RemoveAdsScreen(billingManager: com.mindmachine.mvp.billing.BillingManager,
|
|||||||
Button(
|
Button(
|
||||||
enabled = activity != null && !ui.settings.noAds,
|
enabled = activity != null && !ui.settings.noAds,
|
||||||
onClick = {
|
onClick = {
|
||||||
activity?.let { billingManager.launchPurchase(it, com.mindmachine.mvp.billing.BillingProducts.SUB_REMOVE_ADS_MONTHLY) }
|
activity?.let { billingManager.launchPurchase(it, solutions.tretter.mindmachine.billing.BillingProducts.SUB_REMOVE_ADS_MONTHLY) }
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Text(details[com.mindmachine.mvp.billing.BillingProducts.SUB_REMOVE_ADS_MONTHLY]?.name ?: "Subscribe: $1/month")
|
Text(details[solutions.tretter.mindmachine.billing.BillingProducts.SUB_REMOVE_ADS_MONTHLY]?.name ?: "Subscribe: $1/month")
|
||||||
}
|
}
|
||||||
|
|
||||||
Button(
|
Button(
|
||||||
enabled = activity != null && !ui.settings.noAds,
|
enabled = activity != null && !ui.settings.noAds,
|
||||||
onClick = {
|
onClick = {
|
||||||
activity?.let { billingManager.launchPurchase(it, com.mindmachine.mvp.billing.BillingProducts.INAPP_REMOVE_ADS_FOREVER) }
|
activity?.let { billingManager.launchPurchase(it, solutions.tretter.mindmachine.billing.BillingProducts.INAPP_REMOVE_ADS_FOREVER) }
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Text(details[com.mindmachine.mvp.billing.BillingProducts.INAPP_REMOVE_ADS_FOREVER]?.name ?: "Buy: $20 one-time")
|
Text(details[solutions.tretter.mindmachine.billing.BillingProducts.INAPP_REMOVE_ADS_FOREVER]?.name ?: "Buy: $20 one-time")
|
||||||
}
|
}
|
||||||
|
|
||||||
TextButton(onClick = { billingManager.refresh() }) { Text("Restore / Refresh purchases") }
|
TextButton(onClick = { billingManager.refresh() }) { Text("Restore / Refresh purchases") }
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.ads
|
package solutions.tretter.mindmachine.ads
|
||||||
|
|
||||||
object AdUnits {
|
object AdUnits {
|
||||||
// Google test ad unit ids. Replace with your real unit ids before release.
|
// Google test ad unit ids. Replace with your real unit ids before release.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.ads
|
package solutions.tretter.mindmachine.ads
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.audio
|
package solutions.tretter.mindmachine.audio
|
||||||
|
|
||||||
import android.media.AudioAttributes
|
import android.media.AudioAttributes
|
||||||
import android.media.AudioFormat
|
import android.media.AudioFormat
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.audio
|
package solutions.tretter.mindmachine.audio
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.media.AudioDeviceInfo
|
import android.media.AudioDeviceInfo
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.billing
|
package solutions.tretter.mindmachine.billing
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.billing
|
package solutions.tretter.mindmachine.billing
|
||||||
|
|
||||||
object BillingProducts {
|
object BillingProducts {
|
||||||
// Configure these in Google Play Console
|
// Configure these in Google Play Console
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.data
|
package solutions.tretter.mindmachine.data
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.datastore.preferences.core.booleanPreferencesKey
|
import androidx.datastore.preferences.core.booleanPreferencesKey
|
||||||
@@ -6,7 +6,7 @@ import androidx.datastore.preferences.core.edit
|
|||||||
import androidx.datastore.preferences.core.intPreferencesKey
|
import androidx.datastore.preferences.core.intPreferencesKey
|
||||||
import androidx.datastore.preferences.core.stringPreferencesKey
|
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||||
import androidx.datastore.preferences.preferencesDataStore
|
import androidx.datastore.preferences.preferencesDataStore
|
||||||
import com.mindmachine.mvp.domain.AppSettings
|
import solutions.tretter.mindmachine.domain.AppSettings
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
package com.mindmachine.mvp.data
|
package solutions.tretter.mindmachine.data
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.datastore.preferences.core.edit
|
import androidx.datastore.preferences.core.edit
|
||||||
import androidx.datastore.preferences.core.stringPreferencesKey
|
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||||
import androidx.datastore.preferences.preferencesDataStore
|
import androidx.datastore.preferences.preferencesDataStore
|
||||||
import com.mindmachine.mvp.session.TimelineCurve
|
import solutions.tretter.mindmachine.session.TimelineCurve
|
||||||
import com.mindmachine.mvp.session.TimelineEditorState
|
import solutions.tretter.mindmachine.session.TimelineEditorState
|
||||||
import com.mindmachine.mvp.session.TimelinePoint
|
import solutions.tretter.mindmachine.session.TimelinePoint
|
||||||
import com.mindmachine.mvp.session.TIMELINE_DEFAULT_GRANULARITY_SEC
|
import solutions.tretter.mindmachine.session.TIMELINE_DEFAULT_GRANULARITY_SEC
|
||||||
import com.mindmachine.mvp.session.TimelineSelection
|
import solutions.tretter.mindmachine.session.TimelineSelection
|
||||||
import com.mindmachine.mvp.session.TimelineViewport
|
import solutions.tretter.mindmachine.session.TimelineViewport
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import org.json.JSONArray
|
import org.json.JSONArray
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.domain
|
package solutions.tretter.mindmachine.domain
|
||||||
|
|
||||||
enum class VisualPattern { FLASH, PULSE }
|
enum class VisualPattern { FLASH, PULSE }
|
||||||
enum class SessionMode { AUDIO_VISUAL, AUDIO_ONLY, VISUAL_ONLY }
|
enum class SessionMode { AUDIO_VISUAL, AUDIO_ONLY, VISUAL_ONLY }
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import com.mindmachine.mvp.domain.RuntimeState
|
import solutions.tretter.mindmachine.domain.RuntimeState
|
||||||
|
|
||||||
fun shouldShowActiveControlsByDefault(runtimeState: RuntimeState): Boolean {
|
fun shouldShowActiveControlsByDefault(runtimeState: RuntimeState): Boolean {
|
||||||
return runtimeState != RuntimeState.RUNNING && runtimeState != RuntimeState.COUNTDOWN
|
return runtimeState != RuntimeState.RUNNING && runtimeState != RuntimeState.COUNTDOWN
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import com.mindmachine.mvp.domain.RuntimeState
|
import solutions.tretter.mindmachine.domain.RuntimeState
|
||||||
|
|
||||||
fun shouldUseImmersiveFullscreen(isVisualMode: Boolean, runtimeState: RuntimeState): Boolean {
|
fun shouldUseImmersiveFullscreen(isVisualMode: Boolean, runtimeState: RuntimeState): Boolean {
|
||||||
return isVisualMode && (runtimeState == RuntimeState.COUNTDOWN || runtimeState == RuntimeState.RUNNING)
|
return isVisualMode && (runtimeState == RuntimeState.COUNTDOWN || runtimeState == RuntimeState.RUNNING)
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.mindmachine.mvp.audio.BinauralAudioEngine
|
import solutions.tretter.mindmachine.audio.BinauralAudioEngine
|
||||||
import com.mindmachine.mvp.audio.HeadsetMonitor
|
import solutions.tretter.mindmachine.audio.HeadsetMonitor
|
||||||
import com.mindmachine.mvp.data.SettingsRepository
|
import solutions.tretter.mindmachine.data.SettingsRepository
|
||||||
import com.mindmachine.mvp.data.UserProgramEntity
|
import solutions.tretter.mindmachine.data.UserProgramEntity
|
||||||
import com.mindmachine.mvp.data.UserProgramRepository
|
import solutions.tretter.mindmachine.data.UserProgramRepository
|
||||||
import com.mindmachine.mvp.domain.AppSettings
|
import solutions.tretter.mindmachine.domain.AppSettings
|
||||||
import com.mindmachine.mvp.domain.Presets
|
import solutions.tretter.mindmachine.domain.Presets
|
||||||
import com.mindmachine.mvp.domain.RuntimeState
|
import solutions.tretter.mindmachine.domain.RuntimeState
|
||||||
import com.mindmachine.mvp.domain.SessionConfig
|
import solutions.tretter.mindmachine.domain.SessionConfig
|
||||||
import com.mindmachine.mvp.domain.SessionMode
|
import solutions.tretter.mindmachine.domain.SessionMode
|
||||||
import com.mindmachine.mvp.domain.SessionPreset
|
import solutions.tretter.mindmachine.domain.SessionPreset
|
||||||
import com.mindmachine.mvp.domain.toConfig
|
import solutions.tretter.mindmachine.domain.toConfig
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
@@ -80,7 +80,7 @@ class MainViewModel(
|
|||||||
private val userProgramRepository: UserProgramRepository,
|
private val userProgramRepository: UserProgramRepository,
|
||||||
private val headsetMonitor: HeadsetMonitor,
|
private val headsetMonitor: HeadsetMonitor,
|
||||||
private val audioEngine: BinauralAudioEngine,
|
private val audioEngine: BinauralAudioEngine,
|
||||||
private val billingManager: com.mindmachine.mvp.billing.BillingManager,
|
private val billingManager: solutions.tretter.mindmachine.billing.BillingManager,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
private val _ui = MutableStateFlow(UiState())
|
private val _ui = MutableStateFlow(UiState())
|
||||||
val ui: StateFlow<UiState> = _ui.asStateFlow()
|
val ui: StateFlow<UiState> = _ui.asStateFlow()
|
||||||
@@ -488,7 +488,7 @@ class MainViewModel(
|
|||||||
private val userProgramRepository: UserProgramRepository,
|
private val userProgramRepository: UserProgramRepository,
|
||||||
private val headsetMonitor: HeadsetMonitor,
|
private val headsetMonitor: HeadsetMonitor,
|
||||||
private val audioEngine: BinauralAudioEngine,
|
private val audioEngine: BinauralAudioEngine,
|
||||||
private val billingManager: com.mindmachine.mvp.billing.BillingManager,
|
private val billingManager: solutions.tretter.mindmachine.billing.BillingManager,
|
||||||
) : ViewModelProvider.Factory {
|
) : ViewModelProvider.Factory {
|
||||||
override fun <T : ViewModel> create(modelClass: Class<T>): T =
|
override fun <T : ViewModel> create(modelClass: Class<T>): T =
|
||||||
MainViewModel(settingsRepository, userProgramRepository, headsetMonitor, audioEngine, billingManager) as T
|
MainViewModel(settingsRepository, userProgramRepository, headsetMonitor, audioEngine, billingManager) as T
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import kotlin.math.ln
|
import kotlin.math.ln
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
object ParameterRanges {
|
object ParameterRanges {
|
||||||
const val FLASH_INTERVAL_MS_MIN = 50f
|
const val FLASH_INTERVAL_MS_MIN = 50f
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Concrete runtime parameters evaluated from the timeline curves at a specific time.
|
* Concrete runtime parameters evaluated from the timeline curves at a specific time.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import com.mindmachine.mvp.domain.SessionConfig
|
import solutions.tretter.mindmachine.domain.SessionConfig
|
||||||
object SessionValidator {
|
object SessionValidator {
|
||||||
fun validate(config: SessionConfig): String? {
|
fun validate(config: SessionConfig): String? {
|
||||||
if (config.durationSec !in 60..(8 * 60 * 60)) return "Duration must be 1 minute to 8 hours."
|
if (config.durationSec !in 60..(8 * 60 * 60)) return "Duration must be 1 minute to 8 hours."
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import android.view.HapticFeedbackConstants
|
import android.view.HapticFeedbackConstants
|
||||||
import androidx.activity.compose.BackHandler
|
import androidx.activity.compose.BackHandler
|
||||||
@@ -45,7 +45,7 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.core.view.WindowCompat
|
import androidx.core.view.WindowCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.core.view.WindowInsetsControllerCompat
|
import androidx.core.view.WindowInsetsControllerCompat
|
||||||
import com.mindmachine.mvp.session.TimelineEditorState.ActiveCurve
|
import solutions.tretter.mindmachine.session.TimelineEditorState.ActiveCurve
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import com.mindmachine.mvp.domain.SessionConfig
|
import solutions.tretter.mindmachine.domain.SessionConfig
|
||||||
import com.mindmachine.mvp.domain.SessionMode
|
import solutions.tretter.mindmachine.domain.SessionMode
|
||||||
import com.mindmachine.mvp.domain.SessionPreset
|
import solutions.tretter.mindmachine.domain.SessionPreset
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import kotlin.math.ln
|
import kotlin.math.ln
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import com.mindmachine.mvp.domain.SessionPreset
|
import solutions.tretter.mindmachine.domain.SessionPreset
|
||||||
import com.mindmachine.mvp.domain.VisualPattern
|
import solutions.tretter.mindmachine.domain.VisualPattern
|
||||||
|
|
||||||
object TimelineProgramFactory {
|
object TimelineProgramFactory {
|
||||||
fun fromPreset(preset: SessionPreset): TimelineEditorState {
|
fun fromPreset(preset: SessionPreset): TimelineEditorState {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
object TimelineRuntimeEvaluator {
|
object TimelineRuntimeEvaluator {
|
||||||
fun evaluate(state: TimelineEditorState, tSec: Float): RuntimeParams {
|
fun evaluate(state: TimelineEditorState, tSec: Float): RuntimeParams {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
enum class FlashColor {
|
enum class FlashColor {
|
||||||
RED,
|
RED,
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import com.mindmachine.mvp.domain.RuntimeState
|
import solutions.tretter.mindmachine.domain.RuntimeState
|
||||||
import com.mindmachine.mvp.session.sessionProgressFraction
|
import solutions.tretter.mindmachine.session.sessionProgressFraction
|
||||||
import com.mindmachine.mvp.session.shouldRevealSystemBarsOnTap
|
import solutions.tretter.mindmachine.session.shouldRevealSystemBarsOnTap
|
||||||
import com.mindmachine.mvp.session.shouldShowActiveControlsByDefault
|
import solutions.tretter.mindmachine.session.shouldShowActiveControlsByDefault
|
||||||
import com.mindmachine.mvp.session.shouldUseImmersiveFullscreen
|
import solutions.tretter.mindmachine.session.shouldUseImmersiveFullscreen
|
||||||
import org.junit.Assert.assertFalse
|
import org.junit.Assert.assertFalse
|
||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import androidx.compose.ui.geometry.Offset
|
import androidx.compose.ui.geometry.Offset
|
||||||
import org.junit.Assert.*
|
import org.junit.Assert.*
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import com.mindmachine.mvp.session.TimelineEditorState
|
import solutions.tretter.mindmachine.session.TimelineEditorState
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import com.mindmachine.mvp.session.flashIntervalMsToSeconds
|
import solutions.tretter.mindmachine.session.flashIntervalMsToSeconds
|
||||||
import com.mindmachine.mvp.session.flashIntervalSecondsToMs
|
import solutions.tretter.mindmachine.session.flashIntervalSecondsToMs
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import org.junit.Assert.*
|
import org.junit.Assert.*
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import com.mindmachine.mvp.domain.Presets
|
import solutions.tretter.mindmachine.domain.Presets
|
||||||
import com.mindmachine.mvp.domain.VisualPattern
|
import solutions.tretter.mindmachine.domain.VisualPattern
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import com.mindmachine.mvp.domain.SessionConfig
|
import solutions.tretter.mindmachine.domain.SessionConfig
|
||||||
import com.mindmachine.mvp.domain.SessionMode
|
import solutions.tretter.mindmachine.domain.SessionMode
|
||||||
import com.mindmachine.mvp.domain.VisualPattern
|
import solutions.tretter.mindmachine.domain.VisualPattern
|
||||||
import com.mindmachine.mvp.session.SessionValidator
|
import solutions.tretter.mindmachine.session.SessionValidator
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertNull
|
import org.junit.Assert.assertNull
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertFalse
|
import org.junit.Assert.assertFalse
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import androidx.compose.ui.geometry.Offset
|
import androidx.compose.ui.geometry.Offset
|
||||||
import org.junit.Assert.*
|
import org.junit.Assert.*
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import androidx.compose.ui.graphics.toArgb
|
import androidx.compose.ui.graphics.toArgb
|
||||||
import com.mindmachine.mvp.session.TimelineCurveColors
|
import solutions.tretter.mindmachine.session.TimelineCurveColors
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import com.mindmachine.mvp.session.TimelineEditorState
|
import solutions.tretter.mindmachine.session.TimelineEditorState
|
||||||
import com.mindmachine.mvp.session.TimelineParameters
|
import solutions.tretter.mindmachine.session.TimelineParameters
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.mindmachine.mvp
|
package solutions.tretter.mindmachine
|
||||||
|
|
||||||
import com.mindmachine.mvp.session.FlashColor
|
import solutions.tretter.mindmachine.session.FlashColor
|
||||||
import com.mindmachine.mvp.session.SplitFlashSequencer
|
import solutions.tretter.mindmachine.session.SplitFlashSequencer
|
||||||
import com.mindmachine.mvp.session.computeSplitFlashFrame
|
import solutions.tretter.mindmachine.session.computeSplitFlashFrame
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mindmachine.mvp.session
|
package solutions.tretter.mindmachine.session
|
||||||
|
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|||||||
Reference in New Issue
Block a user