Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ private fun RoundedCarousel(
): Outline {
// 1) Limitar la máscara al tamaño del layer (item)
val layerBounds = Rect(0f, 0f, size.width, size.height)
// intersecta con bounds y da un respiro sub-px para que no se vea cortado
// intersecta con bounds y da un respiro sub-px para que no se vea cortado
val rect = carouselItemInfo.maskRect.intersect(layerBounds).inflate(0.5f)

// 2) Creamos un outline redondeado del tamaño del rect ya intersectado
Expand Down Expand Up @@ -831,7 +831,7 @@ private data class Arrangement(
fun itemCount() = smallCount + mediumCount + largeCount

companion object {
/** Búsqueda simple: prueba combinaciones y escoge la que mejor llena el espacio con menor coste. */
/** Búsqueda simple: prueba combinaciones y escoge la que mejor llena el espacio con menor coste. */
fun findLowestCostArrangement(
availableSpace: Float,
itemSpacing: Float,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,15 +204,15 @@ fun LibraryActionRow(
visible = shouldShowImport,
enter = fadeIn() + expandHorizontally(
expandFrom = Alignment.Start,
clip = false, // <— evita el corte durante la expansión
clip = false, // <— evita el corte durante la expansión
animationSpec = spring(
dampingRatio = Spring.DampingRatioMediumBouncy,
stiffness = Spring.StiffnessLow
)
),
exit = fadeOut() + shrinkHorizontally(
shrinkTowards = Alignment.Start,
clip = false, // <— evita el corte durante la expansión
clip = false, // <— evita el corte durante la expansión
animationSpec = spring(
dampingRatio = Spring.DampingRatioNoBouncy,
stiffness = Spring.StiffnessMedium
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ fun PlayingEqIcon(
val corner = CornerRadius(barW / 2f, barW / 2f)

repeat(bars) { i ->
// Respiración lenta para que el patrón dure más
// Respiración lenta para que el patrón dure más
val slowShift = 0.6f * sin(wander + i * 0.4f)
val slowAmp = 0.85f + 0.15f * sin(wander * 0.5f + 1.1f + i * 0.3f)

Expand All @@ -96,11 +96,11 @@ fun PlayingEqIcon(
// Suavizado tipo smoothstep
val eased = v * v * (3 - 2 * v)

// Altura viva (modo barras)
// Altura viva (modo barras)
val fracBars = minHeightFraction + (maxHeightFraction - minHeightFraction) * eased
val barH = h * fracBars

// Altura punto (círculo → alto = ancho)
// Altura punto (círculo → alto = ancho)
val dotH = barW

// Morph: puntito ⇄ barra (sin importar el frame)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ private fun splitGenreParts(normalized: String): List<String> {
private fun keywordFallback(key: String): Int? {
// Orden: específico -> general
return when {
// --- Catch-all / colecciones / charts ---
// --- Catch-all / colecciones / charts ---
"international" in key && ("hit" in key || "top" in key) -> R.drawable.pop_mic
"hit" in key || "hits" in key || "top " in key || "charts" in key || "chart" in key || "top50" in key || "top 50" in key ->
R.drawable.pop_mic
Expand Down Expand Up @@ -111,7 +111,7 @@ private fun normalizeGenreKey(input: String): String {
.replace("—", "-")

s = s.replace("[()\\[\\]{}]".toRegex(), " ")
.replace("[.:!؟?\"“”]".toRegex(), " ")
.replace("[.:!؟?\"\u201C\u201D\u300C\u300D]".toRegex(), " ")
.replace("\\s+".toRegex(), " ")
.trim()

Expand Down Expand Up @@ -247,7 +247,7 @@ private object GenreMapBuilder {
putAll(R.drawable.harmonica, "blues", "delta blues", "chicago blues", "electric blues")
putAll(R.drawable.maracas, "reggae", "ska", "dancehall", "dub")

// --------- LATIN / WORLD / INTERNATIONAL ---------
// --------- LATIN / WORLD / INTERNATIONAL ---------
putAll(R.drawable.star_angle,
"latin", "latino", "latin pop", "urbano latino", "latin urban",
"world", "world music", "international", "international music",
Expand Down
9 changes: 5 additions & 4 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
<string name="playlist_not_found">未找到播放列表。</string>
<string name="disc_number_header">碟片 %d</string>

<string name="ai_error_api_key">请在“设置”中为所选 AI 提供商配置有效的 API 密钥。</string>
<string name="ai_error_api_key">请在「设置」中为所选 AI 提供商配置有效的 API 密钥。</string>
<string name="ai_error_generic">AI 错误:%s</string>
<string name="ai_error_quota">所选 AI 提供商拒绝了该请求,因为账户没有余额或可用配额。</string>
<string name="ai_error_model_unavailable">所选 AI 模型已不可用。PixelPlayer 已尝试自动切换到受支持的模型。</string>
Expand Down Expand Up @@ -125,7 +125,7 @@
<string name="playlist_none_to_export">没有可导出的播放列表</string>
<string name="playlist_export_failed">导出失败:%1$s</string>
<string name="playlist_export_folder_display">Music/PixelPlayer Exports</string>
<string name="ai_playlist_gemini_key_required">请在“设置”中配置你的 Gemini API 密钥。</string>
<string name="ai_playlist_gemini_key_required">请在「设置」中配置你的 Gemini API 密钥。</string>
<string name="error_unknown">未知错误</string>

<!-- Watch transfer foreground service -->
Expand Down Expand Up @@ -153,6 +153,7 @@
<string name="cast_server_notification_title">正在投放到设备</string>
<string name="cast_server_notification_text">正在向 Cast 设备提供媒体内容</string>
<string name="cast_server_foreground_error">%1$s:%2$s</string>
<string name="cast_seek_unavailable_for_format">为避免投放进程崩溃,暂不支持调整此音频格式的播放进度。</string>

<!-- Backup / data transfer (ViewModels) -->
<string name="backup_invalid_format">无效备份:%1$s</string>
Expand Down Expand Up @@ -210,8 +211,8 @@
<string name="sleep_timer_display_eot">曲目结束时</string>
<string name="sleep_timer_set_for_minutes_toast">已设置 %1$d 分钟后停止。</string>
<string name="sleep_timer_cancelled_toast">定时器已取消。</string>
<string name="sleep_timer_eot_no_song_toast">无法启用曲目结束时:当前没有活动歌曲。</string>
<string name="sleep_timer_eot_song_changed_toast">曲目结束时定时器已停用:歌曲已从 %1$s 切换为 %2$s。</string>
<string name="sleep_timer_eot_no_song_toast">无法启用曲目结束时:当前没有活动歌曲。</string>
<string name="sleep_timer_eot_song_changed_toast">曲目结束时定时器已停用:歌曲已从 %1$s 切换为 %2$s。</string>
<string name="sleep_timer_eot_stop_at_end_toast">播放将在曲目结束时停止。</string>
<string name="sleep_timer_label_previous_track">上一曲</string>
<string name="sleep_timer_label_current_track">当前曲目</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-zh-rCN/strings_auth.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<string name="auth_navidrome_server_url_hint">使用服务器完整的 https:// 基础地址。</string>
<string name="auth_navidrome_username_hint">这是你的 Subsonic 或 Navidrome 账户名。</string>
<string name="auth_navidrome_password_hint">如果服务器支持,也可以使用应用密码。</string>
<string name="auth_navidrome_пароль_hint">如果你的服务器支持,也可以使用应用密码。</string>
<string name="auth_prefill_https">预填充 https://</string>
<string name="auth_navidrome_footer">兼容 Navidrome、Gonic、Airsonic 及其他 Subsonic 兼容服务器</string>
<string name="cd_navidrome_logo">Navidrome</string>
Expand Down
10 changes: 6 additions & 4 deletions app/src/main/res/values-zh-rCN/strings_components.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<string name="lyrics_more_show_romanization">显示罗马音</string>
<string name="lyrics_more_show_translations">显示翻译</string>
<string name="lyrics_more_disable_immersive_once">关闭沉浸模式(仅本次)</string>
<string name="lyrics_more_keep_screen_on">Keep screen on</string>
<string name="lyrics_more_keep_screen_on">保持屏幕开启</string>
<string name="cd_lyrics_align_left">歌词左对齐</string>
<string name="cd_lyrics_align_center">歌词居中对齐</string>
<string name="cd_lyrics_align_right">歌词右对齐</string>
Expand Down Expand Up @@ -51,7 +51,9 @@
<string name="song_field_title">标题</string>
<string name="song_field_artist">艺术家</string>
<string name="song_field_album">专辑</string>
<string name="song_field_album_artist">专辑艺术家</string>
<string name="song_field_genre">流派</string>
<string name="song_field_composer">作曲</string>
<string name="action_try_again">重试</string>
<string name="action_apply_changes">应用更改</string>

Expand Down Expand Up @@ -117,15 +119,15 @@
<string name="song_info_tone_alarm_title">闹钟声音</string>
<string name="song_info_tone_alarm_subtitle">时钟闹钟</string>
<string name="song_info_tone_confirm_title">确认声音更改</string>
<string name="song_info_tone_confirm_body">将%1$s设为%2$s?</string>
<string name="song_info_tone_confirm_body">将%1$s设为%2$s?</string>
<string name="song_info_tone_confirm_action">设置声音</string>
<string name="song_info_tone_success">已将%1$s设为%2$s</string>
<string name="song_info_tone_success">已将%1$s设为%2$s</string>
<string name="song_info_tone_ringtone_label">铃声</string>
<string name="song_info_tone_notification_label">通知声音</string>
<string name="song_info_tone_alarm_label">闹钟声音</string>
<string name="song_info_ringtone_permission_prompt">开启修改系统设置,然后返回 PixelPlayer 自动完成。</string>
<string name="song_info_ringtone_permission_missing">未开启修改系统设置。</string>
<string name="song_info_ringtone_success">已将%1$s设为铃声</string>
<string name="song_info_ringtone_success">已将%1$s设为铃声</string>
<string name="song_info_ringtone_local_only">只有本地歌曲可用作系统声音。</string>
<string name="song_info_ringtone_missing_file">无法准备此音频文件。</string>
<string name="song_info_ringtone_failed">无法更改声音:%1$s</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<string name="auth_gdrive_sign_in_with_google">使用 Google 登录</string>
<string name="auth_gdrive_select_music_folder_title">选择音乐文件夹</string>
<string name="auth_gdrive_select_music_folder_subtitle">选择或创建一个文件夹作为你的音乐来源</string>
<string name="auth_gdrive_create_pixelplay_music_title">创建PixelPlayer Music</string>
<string name="auth_gdrive_create_pixelplay_music_title">创建PixelPlayer Music</string>
<string name="auth_gdrive_create_folder_here_hint">在这里新建一个文件夹来存放你的音乐</string>
<string name="auth_gdrive_no_folders_here">这里没有文件夹</string>
<string name="auth_gdrive_use_this_folder">使用</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<string name="presentation_batch_b_reorder_song">重新排序歌曲</string>
<string name="presentation_batch_b_playlist_empty_title">这个播放列表为空。</string>
<string name="presentation_batch_b_playlist_empty_folder_body">这个文件夹中没有歌曲。</string>
<string name="presentation_batch_b_playlist_empty_add_hint">点击添加歌曲即可开始。</string>
<string name="presentation_batch_b_playlist_empty_add_hint">点击添加歌曲即可开始。</string>
<string name="presentation_batch_b_playlist_options_title">播放列表选项</string>
<string name="presentation_batch_b_edit_playlist">编辑播放列表</string>
<string name="presentation_batch_b_delete_playlist">删除播放列表</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
<string name="cd_import_m3u_playlist">导入 M3U 播放列表</string>
<string name="cd_locate_current_song">定位当前歌曲</string>
<string name="library_storage_filter_all_songs">全部歌曲</string>
<string name="library_storage_filter_online">在线</string>
<string name="library_storage_filter_offline">离线</string>
<string name="library_storage_filter_online">云端</string>
<string name="library_storage_filter_offline">本地</string>
<string name="cd_sort_options">排序选项</string>

<!-- Fetch lyrics (manual search fields) -->
Expand All @@ -29,7 +29,8 @@
<string name="song_picker_title">添加歌曲</string>
<string name="cd_confirm_add_songs">添加所选歌曲</string>
<string name="song_picker_action_add">添加</string>
<string name="song_picker_search_label">搜索歌曲……</string>
<string name="song_picker_search_label">搜索或筛选歌曲……</string>
<string name="song_picker_filter_favorites">喜爱的歌曲</string>
<string name="song_picker_error_load_failed">加载歌曲失败</string>
<string name="song_picker_load_more">加载更多</string>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<string name="presentation_batch_e_cd_queue_actions">队列操作</string>
<string name="presentation_batch_e_action_clear_queue">清空队列</string>
<string name="presentation_batch_e_action_save_as_playlist">保存为播放列表</string>
<string name="presentation_batch_e_action_locate_current_song">定位当前曲目</string>
<string name="presentation_batch_e_queue_named_suffix">%1$s 队列</string>
<string name="presentation_batch_e_queue_current">当前队列</string>
<string name="presentation_batch_e_removed">已移除</string>
Expand All @@ -22,7 +23,7 @@
<string name="presentation_batch_e_search_songs_to_include_placeholder">搜索要包含的歌曲……</string>
<string name="presentation_batch_e_save_as_format">保存为:%1$s</string>
<string name="presentation_batch_e_enter_playlist_name">输入播放列表名称</string>
<string name="presentation_batch_e_no_songs_match_query">没有歌曲匹配%1$s</string>
<string name="presentation_batch_e_no_songs_match_query">没有歌曲匹配%1$s</string>
<string name="presentation_batch_e_cd_dismiss_song">关闭歌曲</string>
<string name="presentation_batch_e_cd_remove_from_playlist">从播放列表中移除</string>
<string name="presentation_batch_e_more_options_for_song">%1$s 的更多选项</string>
Expand All @@ -38,7 +39,7 @@

<!-- PlaylistContainer -->
<string name="presentation_batch_e_no_playlist_created">尚未创建任何播放列表。</string>
<string name="presentation_batch_e_new_playlist_hint">点击新建播放列表按钮开始创建。</string>
<string name="presentation_batch_e_new_playlist_hint">点击新建播放列表按钮开始创建。</string>

<!-- PlaylistCreationDialogs: create flow -->
<string name="presentation_batch_e_create_playlist_title">创建播放列表</string>
Expand Down
Loading
Loading