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 {
namespace = "fr.ajaury.gwenedeg"
namespace = "bzh.ajaury.chombev"
compileSdk =
libs.versions.androidCompileSdk
.get()
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg
package bzh.ajaury.chombev
import android.app.Application
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg
package bzh.ajaury.chombev
import android.os.Bundle
import androidx.activity.ComponentActivity
@@ -22,4 +22,4 @@ class MainActivity : ComponentActivity() {
@Composable
fun AppAndroidPreview() {
App()
}
}
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin {
androidLibrary {
namespace = "fr.ajaury.gwenedeg.core.audioplayer"
namespace = "bzh.ajaury.chombev.core.audioplayer"
}
sourceSets {
@@ -1,12 +1,12 @@
package fr.ajaury.gwenedeg.player.data
package bzh.ajaury.chombev.player.data
import android.content.Context
import androidx.media3.common.C
import androidx.media3.common.MediaItem
import androidx.media3.common.Player
import androidx.media3.exoplayer.ExoPlayer
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.model.PlaybackState
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
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 {
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 fr.ajaury.gwenedeg.player.data.AndroidAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
import bzh.ajaury.chombev.player.data.AndroidAudioPlayer
import bzh.ajaury.chombev.player.data.AndroidAudioSessionManager
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.domain.AudioSessionManager
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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
@@ -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 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
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.player.model
package bzh.ajaury.chombev.player.model
enum class PlaybackState {
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 fr.ajaury.gwenedeg.player.model.PlaybackState
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.coroutines.flow.MutableStateFlow
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 platform.AVFAudio.AVAudioSession
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 fr.ajaury.gwenedeg.player.data.IosAudioPlayer
import fr.ajaury.gwenedeg.player.data.IosAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
import bzh.ajaury.chombev.core.logging.di.loggingModule
import bzh.ajaury.chombev.player.data.IosAudioPlayer
import bzh.ajaury.chombev.player.data.IosAudioSessionManager
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.domain.AudioSessionManager
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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 fr.ajaury.gwenedeg.player.model.PlaybackState
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
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.
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.player.di
package bzh.ajaury.chombev.player.di
import fr.ajaury.gwenedeg.player.data.JvmAudioPlayer
import fr.ajaury.gwenedeg.player.data.JvmAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
import bzh.ajaury.chombev.player.data.JvmAudioPlayer
import bzh.ajaury.chombev.player.data.JvmAudioSessionManager
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.domain.AudioSessionManager
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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 fr.ajaury.gwenedeg.player.model.PlaybackState
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.model.PlaybackState
import kotlinx.browser.document
import kotlinx.coroutines.flow.MutableStateFlow
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 {
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 fr.ajaury.gwenedeg.player.data.WebAudioSessionManager
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.AudioSessionManager
import bzh.ajaury.chombev.player.data.WebAudioPlayer
import bzh.ajaury.chombev.player.data.WebAudioSessionManager
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.domain.AudioSessionManager
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf
+1 -1
View File
@@ -4,6 +4,6 @@ plugins {
kotlin {
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.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.Dispatchers
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.core.coroutines.data
package bzh.ajaury.chombev.core.coroutines.data
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 fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider
import bzh.ajaury.chombev.core.coroutines.data.DefaultDispatcherProvider
import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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
@@ -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.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.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.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.Dispatchers
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin {
androidLibrary {
namespace = "fr.ajaury.gwenedeg.core.logging"
namespace = "bzh.ajaury.chombev.core.logging"
}
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 {
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 fr.ajaury.gwenedeg.core.logging.domain.Logger
import bzh.ajaury.chombev.core.logging.data.KermitLogger
import bzh.ajaury.chombev.core.logging.domain.Logger
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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
+1 -1
View File
@@ -4,6 +4,6 @@ plugins {
kotlin {
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
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin {
androidLibrary {
namespace = "fr.ajaury.gwenedeg.playback"
namespace = "bzh.ajaury.chombev.playback"
}
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 fr.ajaury.gwenedeg.core.logging.domain.Logger
import fr.ajaury.gwenedeg.core.model.Phrase
import fr.ajaury.gwenedeg.player.domain.AudioPlayer
import fr.ajaury.gwenedeg.player.domain.PlaybackRepository
import fr.ajaury.gwenedeg.player.model.PlaybackState
import fr.ajaury.gwenedeg.player.model.PlaybackTiming
import fr.ajaury.gwenedeg.player.model.PlayerState
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
import fr.ajaury.gwenedeg.records.model.Record
import fr.ajaury.gwenedeg.resources.domain.ResourceReader
import fr.ajaury.gwenedeg.subtitle.domain.GetCurrentSubtitleIndexUseCase
import fr.ajaury.gwenedeg.subtitle.domain.SubtitleRepository
import fr.ajaury.gwenedeg.subtitle.model.Subtitle
import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import bzh.ajaury.chombev.core.logging.domain.Logger
import bzh.ajaury.chombev.core.model.Phrase
import bzh.ajaury.chombev.player.domain.AudioPlayer
import bzh.ajaury.chombev.player.domain.PlaybackRepository
import bzh.ajaury.chombev.player.model.PlaybackState
import bzh.ajaury.chombev.player.model.PlaybackTiming
import bzh.ajaury.chombev.player.model.PlayerState
import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import bzh.ajaury.chombev.records.model.Record
import bzh.ajaury.chombev.resources.domain.ResourceReader
import bzh.ajaury.chombev.subtitle.domain.GetCurrentSubtitleIndexUseCase
import bzh.ajaury.chombev.subtitle.domain.SubtitleRepository
import bzh.ajaury.chombev.subtitle.model.Subtitle
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
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
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 fr.ajaury.gwenedeg.player.domain.PlaybackRepository
import bzh.ajaury.chombev.player.data.PlaybackRepositoryImpl
import bzh.ajaury.chombev.player.domain.PlaybackRepository
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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 fr.ajaury.gwenedeg.records.model.Record
import bzh.ajaury.chombev.player.model.PlayerState
import bzh.ajaury.chombev.records.model.Record
import kotlinx.coroutines.flow.Flow
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.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 fr.ajaury.gwenedeg.subtitle.model.SubtitleLine
import bzh.ajaury.chombev.core.model.Phrase
import bzh.ajaury.chombev.subtitle.model.SubtitleLine
data class PlayerState(
val recordTitle: Phrase = Phrase(transcription = ""),
+1 -1
View File
@@ -8,7 +8,7 @@ kotlin {
applyDefaultHierarchyTemplate()
androidLibrary {
namespace = "fr.ajaury.gwenedeg.preferences"
namespace = "bzh.ajaury.chombev.preferences"
}
sourceSets {
@@ -1,10 +1,10 @@
package fr.ajaury.gwenedeg.preferences.di
package bzh.ajaury.chombev.preferences.di
import android.content.Context
import fr.ajaury.gwenedeg.preferences.data.DATA_STORE_FILE_NAME
import fr.ajaury.gwenedeg.preferences.data.DataStorePreferencesRepository
import fr.ajaury.gwenedeg.preferences.data.createPreferencesDataStore
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
import bzh.ajaury.chombev.preferences.data.DATA_STORE_FILE_NAME
import bzh.ajaury.chombev.preferences.data.DataStorePreferencesRepository
import bzh.ajaury.chombev.preferences.data.createPreferencesDataStore
import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import org.koin.core.module.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 fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences
import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
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
/**
* 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.
*/
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 fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences
import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import kotlinx.coroutines.flow.Flow
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.Companion.seconds
@@ -1,7 +1,6 @@
package fr.ajaury.gwenedeg.preferences.model
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences.Companion.TEXT_SCALE_STEPS
package bzh.ajaury.chombev.preferences.model
import bzh.ajaury.chombev.preferences.model.SubtitlePreferences.Companion.TEXT_SCALE_STEPS
/**
* 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.preferences.core.MutablePreferences
@@ -7,9 +7,9 @@ import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.floatPreferencesKey
import androidx.datastore.preferences.core.intPreferencesKey
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences
import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
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.preferences.core.PreferenceDataStoreFactory
@@ -1,11 +1,11 @@
@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 fr.ajaury.gwenedeg.preferences.data.DataStorePreferencesRepository
import fr.ajaury.gwenedeg.preferences.data.createPreferencesDataStore
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
import bzh.ajaury.chombev.preferences.data.DATA_STORE_FILE_NAME
import bzh.ajaury.chombev.preferences.data.DataStorePreferencesRepository
import bzh.ajaury.chombev.preferences.data.createPreferencesDataStore
import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import kotlinx.cinterop.ExperimentalForeignApi
import org.koin.core.module.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 fr.ajaury.gwenedeg.preferences.data.DataStorePreferencesRepository
import fr.ajaury.gwenedeg.preferences.data.createPreferencesDataStore
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
import bzh.ajaury.chombev.preferences.data.DATA_STORE_FILE_NAME
import bzh.ajaury.chombev.preferences.data.DataStorePreferencesRepository
import bzh.ajaury.chombev.preferences.data.createPreferencesDataStore
import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import org.koin.core.module.Module
import org.koin.dsl.module
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 fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
import bzh.ajaury.chombev.preferences.data.InMemoryPreferencesRepository
import bzh.ajaury.chombev.preferences.domain.PreferencesRepository
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.singleOf
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin {
androidLibrary {
namespace = "fr.ajaury.gwenedeg.records"
namespace = "bzh.ajaury.chombev.records"
}
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 fr.ajaury.gwenedeg.records.domain.RecordRepository
import fr.ajaury.gwenedeg.records.model.Record
import bzh.ajaury.chombev.core.model.Phrase
import bzh.ajaury.chombev.records.domain.RecordRepository
import bzh.ajaury.chombev.records.model.Record
import kotlinx.coroutines.flow.Flow
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 fr.ajaury.gwenedeg.records.domain.RecordRepository
import bzh.ajaury.chombev.records.data.InMemoryRecordRepository
import bzh.ajaury.chombev.records.domain.RecordRepository
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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
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(
val id: Int,
+2 -2
View File
@@ -5,7 +5,7 @@ plugins {
kotlin {
androidLibrary {
namespace = "fr.ajaury.gwenedeg.resources"
namespace = "bzh.ajaury.chombev.resources"
androidResources {
enable = true
}
@@ -26,5 +26,5 @@ kotlin {
compose.resources {
// Public so that other modules (e.g. shared UI) can reference drawables such as the app icon.
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 fr.ajaury.gwenedeg.resources.domain.ResourceReader
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import bzh.ajaury.chombev.resources.domain.ResourceReader
import bzh.ajaury.chombev.resources.generated.resources.Res
import kotlinx.coroutines.withContext
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 fr.ajaury.gwenedeg.resources.domain.ResourceReader
import bzh.ajaury.chombev.resources.data.ComposeResourceReader
import bzh.ajaury.chombev.resources.domain.ResourceReader
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
kotlin {
androidLibrary {
namespace = "fr.ajaury.gwenedeg.subtitle"
namespace = "bzh.ajaury.chombev.subtitle"
}
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.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 fr.ajaury.gwenedeg.core.logging.domain.Logger
import fr.ajaury.gwenedeg.core.model.Phrase
import fr.ajaury.gwenedeg.subtitle.domain.SubtitleRepository
import fr.ajaury.gwenedeg.subtitle.model.CantGetSubtitleException
import fr.ajaury.gwenedeg.subtitle.model.Subtitle
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine
import bzh.ajaury.chombev.core.coroutines.domain.DispatcherProvider
import bzh.ajaury.chombev.core.logging.domain.Logger
import bzh.ajaury.chombev.core.model.Phrase
import bzh.ajaury.chombev.subtitle.domain.SubtitleRepository
import bzh.ajaury.chombev.subtitle.model.CantGetSubtitleException
import bzh.ajaury.chombev.subtitle.model.Subtitle
import bzh.ajaury.chombev.subtitle.model.SubtitleLine
import kotlinx.coroutines.withContext
internal class LrcSubtitleRepository(
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.subtitle.data
package bzh.ajaury.chombev.subtitle.data
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 fr.ajaury.gwenedeg.subtitle.data.LrcSubtitleRepository
import fr.ajaury.gwenedeg.subtitle.domain.GetCurrentSubtitleIndexUseCase
import fr.ajaury.gwenedeg.subtitle.domain.SubtitleRepository
import bzh.ajaury.chombev.subtitle.data.LrcParser
import bzh.ajaury.chombev.subtitle.data.LrcSubtitleRepository
import bzh.ajaury.chombev.subtitle.domain.GetCurrentSubtitleIndexUseCase
import bzh.ajaury.chombev.subtitle.domain.SubtitleRepository
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
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
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 {
/**
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.subtitle.model
package bzh.ajaury.chombev.subtitle.model
data class CantGetSubtitleException(
override val message: String,
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.subtitle.model
package bzh.ajaury.chombev.subtitle.model
data class Subtitle(
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
/**
@@ -1,9 +1,9 @@
package fr.ajaury.gwenedeg.subtitle
package bzh.ajaury.chombev.subtitle
import fr.ajaury.gwenedeg.core.model.Phrase
import fr.ajaury.gwenedeg.subtitle.domain.GetCurrentSubtitleIndexUseCase
import fr.ajaury.gwenedeg.subtitle.model.Subtitle
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine
import bzh.ajaury.chombev.core.model.Phrase
import bzh.ajaury.chombev.subtitle.domain.GetCurrentSubtitleIndexUseCase
import bzh.ajaury.chombev.subtitle.model.Subtitle
import bzh.ajaury.chombev.subtitle.model.SubtitleLine
import kotlin.test.Test
import kotlin.test.assertEquals
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.assertEquals
import kotlin.time.Duration.Companion.milliseconds
+2 -2
View File
@@ -17,11 +17,11 @@ dependencies {
compose.desktop {
application {
mainClass = "fr.ajaury.gwenedeg.MainKt"
mainClass = "bzh.ajaury.chombev.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "fr.ajaury.gwenedeg"
packageName = "bzh.ajaury.chombev"
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.application
+1 -1
View File
@@ -1,7 +1,7 @@
TEAM_ID=
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
MARKETING_VERSION=1.0
+1 -1
View File
@@ -18,7 +18,7 @@ kotlin {
}
androidLibrary {
namespace = "fr.ajaury.gwenedeg.shared"
namespace = "bzh.ajaury.chombev.shared"
androidResources {
enable = true
}
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.web.ui
package bzh.ajaury.chombev.web.ui
import android.annotation.SuppressLint
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.webkit.WebResourceRequest
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg
package bzh.ajaury.chombev
import androidx.compose.foundation.isSystemInDarkTheme
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.ui.NavDisplay
import androidx.savedstate.compose.serialization.serializers.SnapshotStateListSerializer
import fr.ajaury.gwenedeg.core.coroutines.di.coroutinesModule
import fr.ajaury.gwenedeg.core.logging.di.loggingModule
import fr.ajaury.gwenedeg.di.sharedModule
import fr.ajaury.gwenedeg.navigation.MainBottomBar
import fr.ajaury.gwenedeg.navigation.MainTopBar
import fr.ajaury.gwenedeg.navigation.Route
import fr.ajaury.gwenedeg.navigation.WebPage
import fr.ajaury.gwenedeg.player.di.audioPlayerModule
import fr.ajaury.gwenedeg.player.ui.PlayerScreen
import fr.ajaury.gwenedeg.records.ui.RecordsScreen
import fr.ajaury.gwenedeg.subtitle.di.subtitleModule
import fr.ajaury.gwenedeg.web.ui.WebViewScreen
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.core.coroutines.di.coroutinesModule
import bzh.ajaury.chombev.core.logging.di.loggingModule
import bzh.ajaury.chombev.di.sharedModule
import bzh.ajaury.chombev.navigation.MainBottomBar
import bzh.ajaury.chombev.navigation.MainTopBar
import bzh.ajaury.chombev.navigation.Route
import bzh.ajaury.chombev.navigation.WebPage
import bzh.ajaury.chombev.player.di.audioPlayerModule
import bzh.ajaury.chombev.player.ui.PlayerScreen
import bzh.ajaury.chombev.records.ui.RecordsScreen
import bzh.ajaury.chombev.subtitle.di.subtitleModule
import bzh.ajaury.chombev.theme.ChomBevTheme
import bzh.ajaury.chombev.web.ui.WebViewScreen
import org.koin.compose.KoinApplication
import org.koin.dsl.koinConfiguration
import org.koin.dsl.module
val appModule = module {
includes(
loggingModule,
sharedModule,
audioPlayerModule,
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.filled.Mic
@@ -11,11 +11,11 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.nav_about
import fr.ajaury.gwenedeg.resources.generated.resources.nav_deepen
import fr.ajaury.gwenedeg.resources.generated.resources.nav_records
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.nav_about
import bzh.ajaury.chombev.resources.generated.resources.nav_deepen
import bzh.ajaury.chombev.resources.generated.resources.nav_records
import bzh.ajaury.chombev.theme.ChomBevTheme
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.layout.Arrangement
@@ -11,9 +11,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.app_icon
import fr.ajaury.gwenedeg.resources.generated.resources.app_name
import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.app_icon
import bzh.ajaury.chombev.resources.generated.resources.app_name
import org.jetbrains.compose.resources.painterResource
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 kotlinx.serialization.Serializable
@@ -1,4 +1,4 @@
package fr.ajaury.gwenedeg.navigation
package bzh.ajaury.chombev.navigation
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.Column
@@ -12,13 +12,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.player.ui.components.LabeledSlider
import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.break_between_phrases_title
import fr.ajaury.gwenedeg.resources.generated.resources.break_between_phrases_value
import fr.ajaury.gwenedeg.resources.generated.resources.playback_speed_title
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.player.ui.components.LabeledSlider
import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.break_between_phrases_title
import bzh.ajaury.chombev.resources.generated.resources.break_between_phrases_value
import bzh.ajaury.chombev.resources.generated.resources.playback_speed_title
import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource
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.Box
@@ -11,14 +11,14 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.player.model.PlaybackState
import fr.ajaury.gwenedeg.player.model.PlaybackTiming
import fr.ajaury.gwenedeg.player.ui.components.NextButton
import fr.ajaury.gwenedeg.player.ui.components.PlayButton
import fr.ajaury.gwenedeg.player.ui.components.PlaybackProgress
import fr.ajaury.gwenedeg.player.ui.components.PreviousButton
import fr.ajaury.gwenedeg.player.ui.components.SpeedPreferenceButton
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.player.model.PlaybackState
import bzh.ajaury.chombev.player.model.PlaybackTiming
import bzh.ajaury.chombev.player.ui.components.NextButton
import bzh.ajaury.chombev.player.ui.components.PlayButton
import bzh.ajaury.chombev.player.ui.components.PlaybackProgress
import bzh.ajaury.chombev.player.ui.components.PreviousButton
import bzh.ajaury.chombev.player.ui.components.SpeedPreferenceButton
import bzh.ajaury.chombev.theme.ChomBevTheme
import kotlin.time.Duration
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.Column
@@ -28,18 +28,18 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import fr.ajaury.gwenedeg.core.model.Phrase
import fr.ajaury.gwenedeg.player.model.PlaybackState
import fr.ajaury.gwenedeg.player.model.PlaybackTiming
import fr.ajaury.gwenedeg.player.model.PlayerState
import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerUiState
import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel
import fr.ajaury.gwenedeg.preferences.ui.SubtitlePreferencesBottomSheet
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.player_back
import fr.ajaury.gwenedeg.resources.generated.resources.subtitle_preferences_action
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.core.model.Phrase
import bzh.ajaury.chombev.player.model.PlaybackState
import bzh.ajaury.chombev.player.model.PlaybackTiming
import bzh.ajaury.chombev.player.model.PlayerState
import bzh.ajaury.chombev.player.ui.viewmodel.PlayerUiState
import bzh.ajaury.chombev.player.ui.viewmodel.PlayerViewModel
import bzh.ajaury.chombev.preferences.ui.SubtitlePreferencesBottomSheet
import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.player_back
import bzh.ajaury.chombev.resources.generated.resources.subtitle_preferences_action
import bzh.ajaury.chombev.subtitle.model.SubtitleLine
import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource
import org.koin.compose.viewmodel.koinViewModel
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.gestures.animateScrollBy
@@ -35,11 +35,11 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import fr.ajaury.gwenedeg.core.model.Phrase
import fr.ajaury.gwenedeg.player.ui.components.TranscriptionText
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences
import fr.ajaury.gwenedeg.subtitle.model.SubtitleLine
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.core.model.Phrase
import bzh.ajaury.chombev.player.ui.components.TranscriptionText
import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import bzh.ajaury.chombev.subtitle.model.SubtitleLine
import bzh.ajaury.chombev.theme.ChomBevTheme
import kotlin.math.abs
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.Column
@@ -12,7 +12,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.theme.ChomBevTheme
@Composable
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.material.icons.Icons
@@ -9,9 +9,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.player_next_sentence
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.player_next_sentence
import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource
@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.LinearEasing
@@ -21,12 +21,12 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.player.model.PlaybackState
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.player_pause
import fr.ajaury.gwenedeg.resources.generated.resources.player_play
import fr.ajaury.gwenedeg.resources.generated.resources.player_replay
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.player.model.PlaybackState
import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.player_pause
import bzh.ajaury.chombev.resources.generated.resources.player_play
import bzh.ajaury.chombev.resources.generated.resources.player_replay
import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource
import kotlin.time.Duration
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.material3.Slider
@@ -9,13 +9,12 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import fr.ajaury.gwenedeg.player.model.PlaybackTiming
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.player.model.PlaybackTiming
import bzh.ajaury.chombev.theme.ChomBevTheme
import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
@Composable
fun PlaybackProgress(
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.material.icons.Icons
@@ -9,9 +9,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.player_previous_sentence
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.player_previous_sentence
import bzh.ajaury.chombev.theme.ChomBevTheme
import org.jetbrains.compose.resources.stringResource
@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.material.icons.Icons
@@ -11,9 +11,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import fr.ajaury.gwenedeg.resources.generated.resources.Res
import fr.ajaury.gwenedeg.resources.generated.resources.playback_settings_action
import fr.ajaury.gwenedeg.theme.ChomBevTheme
import bzh.ajaury.chombev.resources.generated.resources.Res
import bzh.ajaury.chombev.resources.generated.resources.playback_settings_action
import bzh.ajaury.chombev.theme.ChomBevTheme
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.layout.Box
@@ -28,7 +28,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.em
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:
@@ -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 fr.ajaury.gwenedeg.player.model.PlayerState
import fr.ajaury.gwenedeg.preferences.model.PlaybackPreferences
import fr.ajaury.gwenedeg.preferences.model.SubtitlePreferences
import bzh.ajaury.chombev.core.model.Phrase
import bzh.ajaury.chombev.player.model.PlayerState
import bzh.ajaury.chombev.preferences.model.PlaybackPreferences
import bzh.ajaury.chombev.preferences.model.SubtitlePreferences
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds

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