refactor: migrate package structure from fr.ajaury.gwenedeg to bzh.ajaury.chombev

This commit is contained in:
2026-07-07 18:58:17 +02:00
parent 272cefa5fd
commit 6361fa6e74
119 changed files with 370 additions and 376 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ dependencies {
} }
android { android {
namespace = "fr.ajaury.gwenedeg" namespace = "bzh.ajaury.chombev"
compileSdk = compileSdk =
libs.versions.androidCompileSdk libs.versions.androidCompileSdk
.get() .get()
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg package bzh.ajaury.chombev
import android.app.Application import android.app.Application
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg package bzh.ajaury.chombev
import android.os.Bundle import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin { kotlin {
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.core.audioplayer" namespace = "bzh.ajaury.chombev.core.audioplayer"
} }
sourceSets { sourceSets {
@@ -1,12 +1,12 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import android.content.Context import android.content.Context
import androidx.media3.common.C import androidx.media3.common.C
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.Player import androidx.media3.common.Player
import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.ExoPlayer
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import bzh.ajaury.chombev.player.domain.AudioSessionManager
internal class AndroidAudioSessionManager : AudioSessionManager { internal class AndroidAudioSessionManager : AudioSessionManager {
override fun activate() { override fun activate() {
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.player.di package bzh.ajaury.chombev.player.di
import fr.ajaury.gwenedeg.player.data.AndroidAudioPlayer import bzh.ajaury.chombev.player.data.AndroidAudioPlayer
import fr.ajaury.gwenedeg.player.data.AndroidAudioSessionManager import bzh.ajaury.chombev.player.data.AndroidAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import bzh.ajaury.chombev.player.domain.AudioSessionManager
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.di package bzh.ajaury.chombev.player.di
import org.koin.core.module.Module import org.koin.core.module.Module
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.player.domain package bzh.ajaury.chombev.player.domain
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlin.time.Duration import kotlin.time.Duration
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.domain package bzh.ajaury.chombev.player.domain
/** /**
* An Audio Session will allow to request Audio focus and declare our audio source to the system * An Audio Session will allow to request Audio focus and declare our audio source to the system
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.model package bzh.ajaury.chombev.player.model
enum class PlaybackState { enum class PlaybackState {
IDLE, IDLE,
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.cinterop.ExperimentalForeignApi import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import bzh.ajaury.chombev.player.domain.AudioSessionManager
import kotlinx.cinterop.ExperimentalForeignApi import kotlinx.cinterop.ExperimentalForeignApi
import platform.AVFAudio.AVAudioSession import platform.AVFAudio.AVAudioSession
import platform.AVFAudio.AVAudioSessionCategoryOptionDuckOthers import platform.AVFAudio.AVAudioSessionCategoryOptionDuckOthers
@@ -1,10 +1,10 @@
package fr.ajaury.gwenedeg.player.di package bzh.ajaury.chombev.player.di
import fr.ajaury.gwenedeg.core.logging.di.loggingModule import bzh.ajaury.chombev.core.logging.di.loggingModule
import fr.ajaury.gwenedeg.player.data.IosAudioPlayer import bzh.ajaury.chombev.player.data.IosAudioPlayer
import fr.ajaury.gwenedeg.player.data.IosAudioSessionManager import bzh.ajaury.chombev.player.data.IosAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import bzh.ajaury.chombev.player.domain.AudioSessionManager
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import bzh.ajaury.chombev.player.domain.AudioSessionManager
/** /**
* Desktop has no system audio focus model to honour, so activation is a no-op. * Desktop has no system audio focus model to honour, so activation is a no-op.
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.player.di package bzh.ajaury.chombev.player.di
import fr.ajaury.gwenedeg.player.data.JvmAudioPlayer import bzh.ajaury.chombev.player.data.JvmAudioPlayer
import fr.ajaury.gwenedeg.player.data.JvmAudioSessionManager import bzh.ajaury.chombev.player.data.JvmAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import bzh.ajaury.chombev.player.domain.AudioSessionManager
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.browser.document import kotlinx.browser.document
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import bzh.ajaury.chombev.player.domain.AudioSessionManager
internal class WebAudioSessionManager : AudioSessionManager { internal class WebAudioSessionManager : AudioSessionManager {
override fun activate() { override fun activate() {
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.player.di package bzh.ajaury.chombev.player.di
import fr.ajaury.gwenedeg.player.data.WebAudioPlayer import bzh.ajaury.chombev.player.data.WebAudioPlayer
import fr.ajaury.gwenedeg.player.data.WebAudioSessionManager import bzh.ajaury.chombev.player.data.WebAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager import bzh.ajaury.chombev.player.domain.AudioSessionManager
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
+1 -1
View File
@@ -4,6 +4,6 @@ plugins {
kotlin { kotlin {
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.core.coroutines" namespace = "bzh.ajaury.chombev.core.coroutines"
} }
} }
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.coroutines.data package bzh.ajaury.chombev.core.coroutines.data
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.core.coroutines.data package bzh.ajaury.chombev.core.coroutines.data
import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.coroutines.data package bzh.ajaury.chombev.core.coroutines.data
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.core.coroutines.di package bzh.ajaury.chombev.core.coroutines.di
import fr.ajaury.gwenedeg.core.coroutines.data.DefaultDispatcherProvider import bzh.ajaury.chombev.core.coroutines.data.DefaultDispatcherProvider
import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.coroutines.domain package bzh.ajaury.chombev.core.coroutines.domain
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.coroutines.data package bzh.ajaury.chombev.core.coroutines.data
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.coroutines.data package bzh.ajaury.chombev.core.coroutines.data
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.coroutines.data package bzh.ajaury.chombev.core.coroutines.data
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.coroutines.data package bzh.ajaury.chombev.core.coroutines.data
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin { kotlin {
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.core.logging" namespace = "bzh.ajaury.chombev.core.logging"
} }
sourceSets { sourceSets {
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.core.logging.data package bzh.ajaury.chombev.core.logging.data
import fr.ajaury.gwenedeg.core.logging.domain.Logger import bzh.ajaury.chombev.core.logging.domain.Logger
internal class KermitLogger : Logger { internal class KermitLogger : Logger {
private val tag: String = "Chom Bev" private val tag: String = "Chom Bev"
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.core.logging.di package bzh.ajaury.chombev.core.logging.di
import fr.ajaury.gwenedeg.core.logging.data.KermitLogger import bzh.ajaury.chombev.core.logging.data.KermitLogger
import fr.ajaury.gwenedeg.core.logging.domain.Logger import bzh.ajaury.chombev.core.logging.domain.Logger
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.logging.domain package bzh.ajaury.chombev.core.logging.domain
/** /**
* Logging abstraction so the rest of the app depends on this interface * Logging abstraction so the rest of the app depends on this interface
+1 -1
View File
@@ -4,6 +4,6 @@ plugins {
kotlin { kotlin {
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.core.model" namespace = "bzh.ajaury.chombev.core.model"
} }
} }
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.model package bzh.ajaury.chombev.core.model
/** /**
* [translation] is the optional translation of [transcription] in the user's language * [translation] is the optional translation of [transcription] in the user's language
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin { kotlin {
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.playback" namespace = "bzh.ajaury.chombev.playback"
} }
sourceSets { sourceSets {
@@ -1,19 +1,19 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import fr.ajaury.gwenedeg.core.logging.domain.Logger import bzh.ajaury.chombev.core.logging.domain.Logger
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import fr.ajaury.gwenedeg.player.domain.AudioPlayer import bzh.ajaury.chombev.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.PlaybackRepository import bzh.ajaury.chombev.player.domain.PlaybackRepository
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import fr.ajaury.gwenedeg.player.model.PlaybackTiming import bzh.ajaury.chombev.player.model.PlaybackTiming
import fr.ajaury.gwenedeg.player.model.PlayerState import bzh.ajaury.chombev.player.model.PlayerState
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import fr.ajaury.gwenedeg.records.model.Record import bzh.ajaury.chombev.records.model.Record
import fr.ajaury.gwenedeg.resources.domain.ResourceReader import bzh.ajaury.chombev.resources.domain.ResourceReader
import fr.ajaury.gwenedeg.subtitle.domain.GetCurrentSubtitleIndexUseCase import bzh.ajaury.chombev.subtitle.domain.GetCurrentSubtitleIndexUseCase
import fr.ajaury.gwenedeg.subtitle.domain.SubtitleRepository import bzh.ajaury.chombev.subtitle.domain.SubtitleRepository
import fr.ajaury.gwenedeg.subtitle.model.Subtitle import bzh.ajaury.chombev.subtitle.model.Subtitle
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.player.data package bzh.ajaury.chombev.player.data
import fr.ajaury.gwenedeg.subtitle.model.Subtitle import bzh.ajaury.chombev.subtitle.model.Subtitle
import kotlin.time.Duration import kotlin.time.Duration
data class SubtitleProgress( data class SubtitleProgress(
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.player.di package bzh.ajaury.chombev.player.di
import fr.ajaury.gwenedeg.player.data.PlaybackRepositoryImpl import bzh.ajaury.chombev.player.data.PlaybackRepositoryImpl
import fr.ajaury.gwenedeg.player.domain.PlaybackRepository import bzh.ajaury.chombev.player.domain.PlaybackRepository
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.player.domain package bzh.ajaury.chombev.player.domain
import fr.ajaury.gwenedeg.player.model.PlayerState import bzh.ajaury.chombev.player.model.PlayerState
import fr.ajaury.gwenedeg.records.model.Record import bzh.ajaury.chombev.records.model.Record
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlin.time.Duration import kotlin.time.Duration
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.model package bzh.ajaury.chombev.player.model
import kotlin.time.Duration import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.milliseconds
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.player.model package bzh.ajaury.chombev.player.model
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine import bzh.ajaury.chombev.subtitle.model.SubtitleLine
data class PlayerState( data class PlayerState(
val recordTitle: Phrase = Phrase(transcription = ""), val recordTitle: Phrase = Phrase(transcription = ""),
+1 -1
View File
@@ -8,7 +8,7 @@ kotlin {
applyDefaultHierarchyTemplate() applyDefaultHierarchyTemplate()
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.preferences" namespace = "bzh.ajaury.chombev.preferences"
} }
sourceSets { sourceSets {
@@ -1,10 +1,10 @@
package fr.ajaury.gwenedeg.preferences.di package bzh.ajaury.chombev.preferences.di
import android.content.Context import android.content.Context
import fr.ajaury.gwenedeg.preferences.data.DATA_STORE_FILE_NAME import bzh.ajaury.chombev.preferences.data.DATA_STORE_FILE_NAME
import fr.ajaury.gwenedeg.preferences.data.DataStorePreferencesRepository import bzh.ajaury.chombev.preferences.data.DataStorePreferencesRepository
import fr.ajaury.gwenedeg.preferences.data.createPreferencesDataStore import bzh.ajaury.chombev.preferences.data.createPreferencesDataStore
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.dsl.module import org.koin.dsl.module
@@ -1,8 +1,8 @@
package fr.ajaury.gwenedeg.preferences.data package bzh.ajaury.chombev.preferences.data
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.preferences.di package bzh.ajaury.chombev.preferences.di
import org.koin.core.module.Module import org.koin.core.module.Module
/** /**
* Binds [fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository]. Persisted with DataStore on * Binds [bzh.ajaury.chombev.preferences.domain.PreferencesRepository]. Persisted with DataStore on
* every target that ships it (Android, iOS, Desktop); web falls back to an in-memory implementation. * every target that ships it (Android, iOS, Desktop); web falls back to an in-memory implementation.
*/ */
expect val preferencesModule: Module expect val preferencesModule: Module
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.preferences.domain package bzh.ajaury.chombev.preferences.domain
import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlin.time.Duration import kotlin.time.Duration
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.preferences.model package bzh.ajaury.chombev.preferences.model
import kotlin.time.Duration import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
@@ -1,7 +1,6 @@
package fr.ajaury.gwenedeg.preferences.model package bzh.ajaury.chombev.preferences.model
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences.Companion.TEXT_SCALE_STEPS
import bzh.ajaury.chombev.preferences.model.SubtitlePreferences.Companion.TEXT_SCALE_STEPS
/** /**
* User preferences controlling the subtitle display on the player. * User preferences controlling the subtitle display on the player.
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.preferences.data package bzh.ajaury.chombev.preferences.data
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.MutablePreferences import androidx.datastore.preferences.core.MutablePreferences
@@ -7,9 +7,9 @@ import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.floatPreferencesKey import androidx.datastore.preferences.core.floatPreferencesKey
import androidx.datastore.preferences.core.intPreferencesKey import androidx.datastore.preferences.core.intPreferencesKey
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.preferences.data package bzh.ajaury.chombev.preferences.data
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.PreferenceDataStoreFactory import androidx.datastore.preferences.core.PreferenceDataStoreFactory
@@ -1,11 +1,11 @@
@file:OptIn(ExperimentalForeignApi::class) @file:OptIn(ExperimentalForeignApi::class)
package fr.ajaury.gwenedeg.preferences.di package bzh.ajaury.chombev.preferences.di
import fr.ajaury.gwenedeg.preferences.data.DATA_STORE_FILE_NAME import bzh.ajaury.chombev.preferences.data.DATA_STORE_FILE_NAME
import fr.ajaury.gwenedeg.preferences.data.DataStorePreferencesRepository import bzh.ajaury.chombev.preferences.data.DataStorePreferencesRepository
import fr.ajaury.gwenedeg.preferences.data.createPreferencesDataStore import bzh.ajaury.chombev.preferences.data.createPreferencesDataStore
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import kotlinx.cinterop.ExperimentalForeignApi import kotlinx.cinterop.ExperimentalForeignApi
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.dsl.module import org.koin.dsl.module
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.preferences.di package bzh.ajaury.chombev.preferences.di
import fr.ajaury.gwenedeg.preferences.data.DATA_STORE_FILE_NAME import bzh.ajaury.chombev.preferences.data.DATA_STORE_FILE_NAME
import fr.ajaury.gwenedeg.preferences.data.DataStorePreferencesRepository import bzh.ajaury.chombev.preferences.data.DataStorePreferencesRepository
import fr.ajaury.gwenedeg.preferences.data.createPreferencesDataStore import bzh.ajaury.chombev.preferences.data.createPreferencesDataStore
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.dsl.module import org.koin.dsl.module
import java.io.File import java.io.File
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.preferences.di package bzh.ajaury.chombev.preferences.di
import fr.ajaury.gwenedeg.preferences.data.InMemoryPreferencesRepository import bzh.ajaury.chombev.preferences.data.InMemoryPreferencesRepository
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.singleOf
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin { kotlin {
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.records" namespace = "bzh.ajaury.chombev.records"
} }
sourceSets { sourceSets {
@@ -1,8 +1,8 @@
package fr.ajaury.gwenedeg.records.data package bzh.ajaury.chombev.records.data
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import fr.ajaury.gwenedeg.records.domain.RecordRepository import bzh.ajaury.chombev.records.domain.RecordRepository
import fr.ajaury.gwenedeg.records.model.Record import bzh.ajaury.chombev.records.model.Record
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOf
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.records.di package bzh.ajaury.chombev.records.di
import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository import bzh.ajaury.chombev.records.data.InMemoryRecordRepository
import fr.ajaury.gwenedeg.records.domain.RecordRepository import bzh.ajaury.chombev.records.domain.RecordRepository
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.factoryOf import org.koin.core.module.dsl.factoryOf
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.records.domain package bzh.ajaury.chombev.records.domain
import fr.ajaury.gwenedeg.records.model.Record import bzh.ajaury.chombev.records.model.Record
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
interface RecordRepository { interface RecordRepository {
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.records.model package bzh.ajaury.chombev.records.model
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
data class Record( data class Record(
val id: Int, val id: Int,
+2 -2
View File
@@ -5,7 +5,7 @@ plugins {
kotlin { kotlin {
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.resources" namespace = "bzh.ajaury.chombev.resources"
androidResources { androidResources {
enable = true enable = true
} }
@@ -26,5 +26,5 @@ kotlin {
compose.resources { compose.resources {
// Public so that other modules (e.g. shared UI) can reference drawables such as the app icon. // Public so that other modules (e.g. shared UI) can reference drawables such as the app icon.
publicResClass = true publicResClass = true
packageOfResClass = "fr.ajaury.gwenedeg.resources.generated.resources" packageOfResClass = "bzh.ajaury.chombev.resources.generated.resources"
} }
@@ -1,8 +1,8 @@
package fr.ajaury.gwenedeg.resources.data package bzh.ajaury.chombev.resources.data
import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import fr.ajaury.gwenedeg.resources.domain.ResourceReader import bzh.ajaury.chombev.resources.domain.ResourceReader
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
internal class ComposeResourceReader( internal class ComposeResourceReader(
@@ -1,7 +1,7 @@
package fr.ajaury.gwenedeg.resources.di package bzh.ajaury.chombev.resources.di
import fr.ajaury.gwenedeg.resources.data.ComposeResourceReader import bzh.ajaury.chombev.resources.data.ComposeResourceReader
import fr.ajaury.gwenedeg.resources.domain.ResourceReader import bzh.ajaury.chombev.resources.domain.ResourceReader
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.factoryOf import org.koin.core.module.dsl.factoryOf
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.resources.domain package bzh.ajaury.chombev.resources.domain
/** /**
* Provides access to the app's bundled resources. Implemented by this module, which owns the * Provides access to the app's bundled resources. Implemented by this module, which owns the
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin { kotlin {
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.subtitle" namespace = "bzh.ajaury.chombev.subtitle"
} }
sourceSets { sourceSets {
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.subtitle.data package bzh.ajaury.chombev.subtitle.data
import kotlin.time.Duration import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.milliseconds
@@ -1,12 +1,12 @@
package fr.ajaury.gwenedeg.subtitle.data package bzh.ajaury.chombev.subtitle.data
import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import fr.ajaury.gwenedeg.core.logging.domain.Logger import bzh.ajaury.chombev.core.logging.domain.Logger
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import fr.ajaury.gwenedeg.subtitle.domain.SubtitleRepository import bzh.ajaury.chombev.subtitle.domain.SubtitleRepository
import fr.ajaury.gwenedeg.subtitle.model.CantGetSubtitleException import bzh.ajaury.chombev.subtitle.model.CantGetSubtitleException
import fr.ajaury.gwenedeg.subtitle.model.Subtitle import bzh.ajaury.chombev.subtitle.model.Subtitle
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine import bzh.ajaury.chombev.subtitle.model.SubtitleLine
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
internal class LrcSubtitleRepository( internal class LrcSubtitleRepository(
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.subtitle.data package bzh.ajaury.chombev.subtitle.data
import kotlin.time.Duration import kotlin.time.Duration
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.subtitle.di package bzh.ajaury.chombev.subtitle.di
import fr.ajaury.gwenedeg.subtitle.data.LrcParser import bzh.ajaury.chombev.subtitle.data.LrcParser
import fr.ajaury.gwenedeg.subtitle.data.LrcSubtitleRepository import bzh.ajaury.chombev.subtitle.data.LrcSubtitleRepository
import fr.ajaury.gwenedeg.subtitle.domain.GetCurrentSubtitleIndexUseCase import bzh.ajaury.chombev.subtitle.domain.GetCurrentSubtitleIndexUseCase
import fr.ajaury.gwenedeg.subtitle.domain.SubtitleRepository import bzh.ajaury.chombev.subtitle.domain.SubtitleRepository
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.core.module.dsl.bind import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.factoryOf import org.koin.core.module.dsl.factoryOf
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.subtitle.domain package bzh.ajaury.chombev.subtitle.domain
import fr.ajaury.gwenedeg.subtitle.model.Subtitle import bzh.ajaury.chombev.subtitle.model.Subtitle
import kotlin.time.Duration import kotlin.time.Duration
class GetCurrentSubtitleIndexUseCase { class GetCurrentSubtitleIndexUseCase {
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.subtitle.domain package bzh.ajaury.chombev.subtitle.domain
import fr.ajaury.gwenedeg.subtitle.model.Subtitle import bzh.ajaury.chombev.subtitle.model.Subtitle
interface SubtitleRepository { interface SubtitleRepository {
/** /**
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.subtitle.model package bzh.ajaury.chombev.subtitle.model
data class CantGetSubtitleException( data class CantGetSubtitleException(
override val message: String, override val message: String,
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.subtitle.model package bzh.ajaury.chombev.subtitle.model
data class Subtitle( data class Subtitle(
val lines: List<SubtitleLine>, val lines: List<SubtitleLine>,
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.subtitle.model package bzh.ajaury.chombev.subtitle.model
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import kotlin.time.Duration import kotlin.time.Duration
/** /**
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.subtitle package bzh.ajaury.chombev.subtitle
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import fr.ajaury.gwenedeg.subtitle.domain.GetCurrentSubtitleIndexUseCase import bzh.ajaury.chombev.subtitle.domain.GetCurrentSubtitleIndexUseCase
import fr.ajaury.gwenedeg.subtitle.model.Subtitle import bzh.ajaury.chombev.subtitle.model.Subtitle
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine import bzh.ajaury.chombev.subtitle.model.SubtitleLine
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.milliseconds
@@ -1,6 +1,6 @@
package fr.ajaury.gwenedeg.subtitle package bzh.ajaury.chombev.subtitle
import fr.ajaury.gwenedeg.subtitle.data.LrcParser import bzh.ajaury.chombev.subtitle.data.LrcParser
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.milliseconds
+2 -2
View File
@@ -17,11 +17,11 @@ dependencies {
compose.desktop { compose.desktop {
application { application {
mainClass = "fr.ajaury.gwenedeg.MainKt" mainClass = "bzh.ajaury.chombev.MainKt"
nativeDistributions { nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "fr.ajaury.gwenedeg" packageName = "bzh.ajaury.chombev"
packageVersion = "1.0.0" packageVersion = "1.0.0"
} }
} }
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg package bzh.ajaury.chombev
import androidx.compose.ui.window.Window import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application import androidx.compose.ui.window.application
+1 -1
View File
@@ -1,7 +1,7 @@
TEAM_ID= TEAM_ID=
PRODUCT_NAME=Chom Bev PRODUCT_NAME=Chom Bev
PRODUCT_BUNDLE_IDENTIFIER=fr.ajaury.gwenedeg.Gwenedeg$(TEAM_ID) PRODUCT_BUNDLE_IDENTIFIER=bzh.ajaury.chombev.Gwenedeg$(TEAM_ID)
CURRENT_PROJECT_VERSION=1 CURRENT_PROJECT_VERSION=1
MARKETING_VERSION=1.0 MARKETING_VERSION=1.0
+1 -1
View File
@@ -18,7 +18,7 @@ kotlin {
} }
androidLibrary { androidLibrary {
namespace = "fr.ajaury.gwenedeg.shared" namespace = "bzh.ajaury.chombev.shared"
androidResources { androidResources {
enable = true enable = true
} }
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.web.ui package bzh.ajaury.chombev.web.ui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.web.ui package bzh.ajaury.chombev.web.ui
import android.content.Intent import android.content.Intent
import android.webkit.WebResourceRequest import android.webkit.WebResourceRequest
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg package bzh.ajaury.chombev
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsets
@@ -10,31 +10,30 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.navigation3.runtime.NavEntry import androidx.navigation3.runtime.NavEntry
import androidx.navigation3.ui.NavDisplay import androidx.navigation3.ui.NavDisplay
import androidx.savedstate.compose.serialization.serializers.SnapshotStateListSerializer import androidx.savedstate.compose.serialization.serializers.SnapshotStateListSerializer
import fr.ajaury.gwenedeg.core.coroutines.di.coroutinesModule import bzh.ajaury.chombev.core.coroutines.di.coroutinesModule
import fr.ajaury.gwenedeg.core.logging.di.loggingModule import bzh.ajaury.chombev.core.logging.di.loggingModule
import fr.ajaury.gwenedeg.di.sharedModule import bzh.ajaury.chombev.di.sharedModule
import fr.ajaury.gwenedeg.navigation.MainBottomBar import bzh.ajaury.chombev.navigation.MainBottomBar
import fr.ajaury.gwenedeg.navigation.MainTopBar import bzh.ajaury.chombev.navigation.MainTopBar
import fr.ajaury.gwenedeg.navigation.Route import bzh.ajaury.chombev.navigation.Route
import fr.ajaury.gwenedeg.navigation.WebPage import bzh.ajaury.chombev.navigation.WebPage
import fr.ajaury.gwenedeg.player.di.audioPlayerModule import bzh.ajaury.chombev.player.di.audioPlayerModule
import fr.ajaury.gwenedeg.player.ui.PlayerScreen import bzh.ajaury.chombev.player.ui.PlayerScreen
import fr.ajaury.gwenedeg.records.ui.RecordsScreen import bzh.ajaury.chombev.records.ui.RecordsScreen
import fr.ajaury.gwenedeg.subtitle.di.subtitleModule import bzh.ajaury.chombev.subtitle.di.subtitleModule
import fr.ajaury.gwenedeg.web.ui.WebViewScreen import bzh.ajaury.chombev.theme.ChomBevTheme
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.web.ui.WebViewScreen
import org.koin.compose.KoinApplication import org.koin.compose.KoinApplication
import org.koin.dsl.koinConfiguration import org.koin.dsl.koinConfiguration
import org.koin.dsl.module import org.koin.dsl.module
val appModule = module { val appModule = module {
includes( includes(
loggingModule, loggingModule,
sharedModule, sharedModule,
audioPlayerModule, audioPlayerModule,
coroutinesModule, coroutinesModule,
subtitleModule subtitleModule,
) )
} }
@@ -0,0 +1,21 @@
package bzh.ajaury.chombev.di
import bzh.ajaury.chombev.core.logging.di.loggingModule
import bzh.ajaury.chombev.player.di.playbackModule
import bzh.ajaury.chombev.player.ui.viewmodel.PlayerViewModel
import bzh.ajaury.chombev.preferences.di.preferencesModule
import bzh.ajaury.chombev.records.di.recordsModule
import bzh.ajaury.chombev.records.ui.viewmodel.RecordsViewModel
import bzh.ajaury.chombev.resources.di.resourcesModule
import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module
val sharedModule = module {
includes(loggingModule)
includes(playbackModule)
includes(preferencesModule)
includes(recordsModule)
includes(resourcesModule)
viewModelOf(::RecordsViewModel)
viewModelOf(::PlayerViewModel)
}
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.navigation package bzh.ajaury.chombev.navigation
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Mic import androidx.compose.material.icons.filled.Mic
@@ -11,11 +11,11 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.nav_about import bzh.ajaury.chombev.resources.generated.resources.nav_about
import fr.ajaury.gwenedeg.resources.generated.resources.nav_deepen import bzh.ajaury.chombev.resources.generated.resources.nav_deepen
import fr.ajaury.gwenedeg.resources.generated.resources.nav_records import bzh.ajaury.chombev.resources.generated.resources.nav_records
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
/** /**
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.navigation package bzh.ajaury.chombev.navigation
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -11,9 +11,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.app_icon import bzh.ajaury.chombev.resources.generated.resources.app_icon
import fr.ajaury.gwenedeg.resources.generated.resources.app_name import bzh.ajaury.chombev.resources.generated.resources.app_name
import org.jetbrains.compose.resources.painterResource import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.navigation package bzh.ajaury.chombev.navigation
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.navigation package bzh.ajaury.chombev.navigation
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui package bzh.ajaury.chombev.player.ui
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -12,13 +12,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.player.ui.components.LabeledSlider import bzh.ajaury.chombev.player.ui.components.LabeledSlider
import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.break_between_phrases_title import bzh.ajaury.chombev.resources.generated.resources.break_between_phrases_title
import fr.ajaury.gwenedeg.resources.generated.resources.break_between_phrases_value import bzh.ajaury.chombev.resources.generated.resources.break_between_phrases_value
import fr.ajaury.gwenedeg.resources.generated.resources.playback_speed_title import bzh.ajaury.chombev.resources.generated.resources.playback_speed_title
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
import kotlin.math.roundToInt import kotlin.math.roundToInt
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui package bzh.ajaury.chombev.player.ui
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@@ -11,14 +11,14 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import fr.ajaury.gwenedeg.player.model.PlaybackTiming import bzh.ajaury.chombev.player.model.PlaybackTiming
import fr.ajaury.gwenedeg.player.ui.components.NextButton import bzh.ajaury.chombev.player.ui.components.NextButton
import fr.ajaury.gwenedeg.player.ui.components.PlayButton import bzh.ajaury.chombev.player.ui.components.PlayButton
import fr.ajaury.gwenedeg.player.ui.components.PlaybackProgress import bzh.ajaury.chombev.player.ui.components.PlaybackProgress
import fr.ajaury.gwenedeg.player.ui.components.PreviousButton import bzh.ajaury.chombev.player.ui.components.PreviousButton
import fr.ajaury.gwenedeg.player.ui.components.SpeedPreferenceButton import bzh.ajaury.chombev.player.ui.components.SpeedPreferenceButton
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import kotlin.time.Duration import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui package bzh.ajaury.chombev.player.ui
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -28,18 +28,18 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import fr.ajaury.gwenedeg.player.model.PlaybackTiming import bzh.ajaury.chombev.player.model.PlaybackTiming
import fr.ajaury.gwenedeg.player.model.PlayerState import bzh.ajaury.chombev.player.model.PlayerState
import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerUiState import bzh.ajaury.chombev.player.ui.viewmodel.PlayerUiState
import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel import bzh.ajaury.chombev.player.ui.viewmodel.PlayerViewModel
import fr.ajaury.gwenedeg.preferences.ui.SubtitlePreferencesBottomSheet import bzh.ajaury.chombev.preferences.ui.SubtitlePreferencesBottomSheet
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.player_back import bzh.ajaury.chombev.resources.generated.resources.player_back
import fr.ajaury.gwenedeg.resources.generated.resources.subtitle_preferences_action import bzh.ajaury.chombev.resources.generated.resources.subtitle_preferences_action
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine import bzh.ajaury.chombev.subtitle.model.SubtitleLine
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
import org.koin.compose.viewmodel.koinViewModel import org.koin.compose.viewmodel.koinViewModel
import org.koin.core.parameter.parametersOf import org.koin.core.parameter.parametersOf
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui package bzh.ajaury.chombev.player.ui
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.gestures.animateScrollBy import androidx.compose.foundation.gestures.animateScrollBy
@@ -35,11 +35,11 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import fr.ajaury.gwenedeg.player.ui.components.TranscriptionText import bzh.ajaury.chombev.player.ui.components.TranscriptionText
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine import bzh.ajaury.chombev.subtitle.model.SubtitleLine
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import kotlin.math.abs import kotlin.math.abs
import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.milliseconds
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui.components package bzh.ajaury.chombev.player.ui.components
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -12,7 +12,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
@Composable @Composable
fun LabeledSlider( fun LabeledSlider(
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui.components package bzh.ajaury.chombev.player.ui.components
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@@ -9,9 +9,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.player_next_sentence import bzh.ajaury.chombev.resources.generated.resources.player_next_sentence
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
@Composable @Composable
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui.components package bzh.ajaury.chombev.player.ui.components
import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.LinearEasing
@@ -21,12 +21,12 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.player.model.PlaybackState import bzh.ajaury.chombev.player.model.PlaybackState
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.player_pause import bzh.ajaury.chombev.resources.generated.resources.player_pause
import fr.ajaury.gwenedeg.resources.generated.resources.player_play import bzh.ajaury.chombev.resources.generated.resources.player_play
import fr.ajaury.gwenedeg.resources.generated.resources.player_replay import bzh.ajaury.chombev.resources.generated.resources.player_replay
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
import kotlin.time.Duration import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui.components package bzh.ajaury.chombev.player.ui.components
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.Slider import androidx.compose.material3.Slider
@@ -9,13 +9,12 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import fr.ajaury.gwenedeg.player.model.PlaybackTiming import bzh.ajaury.chombev.player.model.PlaybackTiming
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import kotlin.time.Duration import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
@Composable @Composable
fun PlaybackProgress( fun PlaybackProgress(
playbackTiming: PlaybackTiming, playbackTiming: PlaybackTiming,
@@ -67,4 +66,3 @@ private fun PlaybackProgressEndedPreview() {
) )
} }
} }
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui.components package bzh.ajaury.chombev.player.ui.components
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@@ -9,9 +9,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.player_previous_sentence import bzh.ajaury.chombev.resources.generated.resources.player_previous_sentence
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
@Composable @Composable
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui.components package bzh.ajaury.chombev.player.ui.components
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@@ -11,9 +11,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.resources.generated.resources.Res import bzh.ajaury.chombev.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.playback_settings_action import bzh.ajaury.chombev.resources.generated.resources.playback_settings_action
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
/** /**
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.ui.components package bzh.ajaury.chombev.player.ui.components
import androidx.compose.foundation.Canvas import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@@ -28,7 +28,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.em import androidx.compose.ui.unit.em
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import fr.ajaury.gwenedeg.theme.ChomBevTheme import bzh.ajaury.chombev.theme.ChomBevTheme
/** /**
* Matches a single letter marked in a transcription, either: * Matches a single letter marked in a transcription, either:
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.player.ui.viewmodel package bzh.ajaury.chombev.player.ui.viewmodel
import fr.ajaury.gwenedeg.core.model.Phrase import bzh.ajaury.chombev.core.model.Phrase
import fr.ajaury.gwenedeg.player.model.PlayerState import bzh.ajaury.chombev.player.model.PlayerState
import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import kotlin.time.Duration import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds

Some files were not shown because too many files have changed in this diff Show More