This commit is contained in:
2026-03-02 18:49:17 +02:00
parent 2433322556
commit a59f2d61dc
76 changed files with 10212 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
package com.sffteam.voidclient
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Article
import androidx.compose.material.icons.automirrored.filled.InsertDriveFile
import androidx.compose.material.icons.filled.Article
import androidx.compose.material.icons.filled.AudioFile
import androidx.compose.material.icons.filled.InsertDriveFile
import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import java.io.File
import kotlin.math.absoluteValue
object Utils {
lateinit var windowSize: WindowSizeClass
val audioExtensions = listOf(
"mp3", "aac", "m4a", "ogg", "oga", "opus", "wma", "amr", "3gp",
"flac", "alac", "ape", "wav", "aiff", "aif", "aifc", "wv", "tta", "tak", "shn",
"dsf", "dff", "dsd", "pcm", "dxp", "pt24",
"mid", "midi", "rmi", "kar",
"mod", "xm", "s3m", "it", "mtm", "umx", "mo3",
"caf", "au", "snd", "ra", "rm", "mka", "weba", "ac3", "eac3", "dts", "m4b",
"voc", "8svx", "cda", "gsm", "mpc", "spx", "la"
)
fun getIconForFile(file : String) : ImageVector {
val extension = File(file).extension
if (extension == "txt") {
return Icons.AutoMirrored.Filled.Article
}
for (i in audioExtensions) {
if (extension == i) {
return Icons.Filled.AudioFile
}
}
return Icons.AutoMirrored.Filled.InsertDriveFile
}
fun getSizeFromBytes(bytes : Long) : String {
if (bytes <= 1000) {
return "$bytes B"
}
if (bytes in 1000..<1000000) {
val kb = bytes / 1000
return "$kb KB"
}
if (bytes > 1000000) {
val mb = bytes / 1000000
return "$mb MB"
}
return "$bytes"
}
fun getColorForAvatar(avatar: String): Pair<Color, Color> {
val colors = listOf(
Pair(Color(0xFFFF0026), Color(0xFFFF00BB)),
Pair(Color(0xFFFFC004), Color(0xFFFFE59F)),
Pair(Color(0xFF0A5BC2), Color(0xFF3B8FFF)),
Pair(Color(0xFF04C715), Color(0xFF6AFC78)),
Pair(Color(0xFFA308C4), Color(0xFFE071FC)),
)
val index = (avatar.hashCode().absoluteValue) % colors.size
return colors[index]
}
fun getColorForNickname(nickName: String): Color {
val colors = listOf(
Color(0xFFFF2B4B),
Color(0xFFF8C324),
Color(0xFFFD903C),
Color(0xFF2196F3),
Color(0xFF2BFF47),
Color(0xFFE139FF),
Color(0xFF41E0D2),
Color(0xFF7826FC),
)
val index = (nickName.hashCode().absoluteValue) % colors.size
return colors[index]
}
}