mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
154 lines
5.2 KiB
QML
154 lines
5.2 KiB
QML
import QtQuick
|
|
import qs.Common
|
|
|
|
Item {
|
|
id: root
|
|
|
|
property string name: ""
|
|
property int size: Theme.fontSizeMedium
|
|
property alias color: icon.color
|
|
|
|
width: size
|
|
height: size
|
|
visible: text.length > 0
|
|
|
|
// This is for file browser, particularly - might want another map later for app IDs
|
|
readonly property var iconMap: ({
|
|
// --- Distribution logos ---
|
|
"debian": "\u{f08da}",
|
|
"arch": "\u{f08c7}",
|
|
"archcraft": "\u{f345}",
|
|
"guix": "\u{f325}",
|
|
"fedora": "\u{f08db}",
|
|
"nixos": "\u{f1105}",
|
|
"ubuntu": "\u{f0548}",
|
|
"gentoo": "\u{f08e8}",
|
|
"endeavouros": "\u{f322}",
|
|
"manjaro": "\u{f160a}",
|
|
"opensuse": "\u{f314}",
|
|
|
|
// --- special types ---
|
|
"folder": "\u{F024B}",
|
|
"file": "\u{F0214}",
|
|
|
|
// --- special filenames (no extension) ---
|
|
"docker": "\u{F0868}",
|
|
"makefile": "\u{F09EE}",
|
|
"license": "\u{F09EE}",
|
|
"readme": "\u{F0354}",
|
|
|
|
// --- programming languages ---
|
|
"rs": "\u{F1617}",
|
|
"dart": "\u{e798}",
|
|
"go": "\u{F07D3}",
|
|
"py": "\u{F0320}",
|
|
"js": "\u{F031E}",
|
|
"jsx": "\u{F031E}",
|
|
"ts": "\u{F06E6}",
|
|
"tsx": "\u{F06E6}",
|
|
"java": "\u{F0B37}",
|
|
"c": "\u{F0671}",
|
|
"cpp": "\u{F0672}",
|
|
"cxx": "\u{F0672}",
|
|
"h": "\u{F0672}",
|
|
"hpp": "\u{F0672}",
|
|
"cs": "\u{F031B}",
|
|
"html": "\u{e60e}",
|
|
"htm": "\u{e60e}",
|
|
"css": "\u{E6b8}",
|
|
"scss": "\u{F031C}",
|
|
"less": "\u{F031C}",
|
|
"md": "\u{F0354}",
|
|
"markdown": "\u{F0354}",
|
|
"json": "\u{eb0f}",
|
|
"jsonc": "\u{eb0f}",
|
|
"yaml": "\u{e8eb}",
|
|
"yml": "\u{e8eb}",
|
|
"xml": "\u{F09EE}",
|
|
"sql": "\u{f1c0}",
|
|
|
|
// --- scripts / shells ---
|
|
"sh": "\u{f0bc1}",
|
|
"bash": "\u{f0bc1}",
|
|
"zsh": "\u{f0bc1}",
|
|
"fish": "\u{f0bc1}",
|
|
"ps1": "\u{f0bc1}",
|
|
"bat": "\u{f0bc1}",
|
|
|
|
// --- data / config ---
|
|
"toml": "\u{e6b2}",
|
|
"ini": "\u{F09EE}",
|
|
"conf": "\u{F09EE}",
|
|
"cfg": "\u{F09EE}",
|
|
"csv": "\u{eefc}",
|
|
"tsv": "\u{F021C}",
|
|
|
|
// --- docs / office ---
|
|
"pdf": "\u{F0226}",
|
|
"doc": "\u{F09EE}",
|
|
"docx": "\u{F09EE}",
|
|
"rtf": "\u{F09EE}",
|
|
"ppt": "\u{F09EE}",
|
|
"pptx": "\u{F09EE}",
|
|
"log": "\u{F09EE}",
|
|
"xls": "\u{F021C}",
|
|
"xlsx": "\u{F021C}",
|
|
|
|
// --- images ---
|
|
"ico": "\u{F021F}",
|
|
|
|
// --- audio / video ---
|
|
"mp3": "\u{e638}",
|
|
"wav": "\u{e638}",
|
|
"flac": "\u{e638}",
|
|
"ogg": "\u{e638}",
|
|
"mp4": "\u{f0567}",
|
|
"mkv": "\u{f0567}",
|
|
"webm": "\u{f0567}",
|
|
"mov": "\u{f0567}",
|
|
|
|
// --- archives / packages ---
|
|
"zip": "\u{e6aa}",
|
|
"tar": "\u{f003c}",
|
|
"gz": "\u{f003c}",
|
|
"bz2": "\u{f003c}",
|
|
"7z": "\u{f003c}",
|
|
|
|
// --- containers / infra / cloud ---
|
|
"dockerfile": "\u{F0868}",
|
|
"yml.k8s": "\u{F09EE}",
|
|
"yaml.k8s": "\u{F09EE}",
|
|
"tf": "\u{F09EE}",
|
|
"tfvars": "\u{F09EE}"
|
|
})
|
|
|
|
|
|
readonly property string text: iconMap[name] || iconMap["file"] || ""
|
|
|
|
function getIconForFile(fileName) {
|
|
const lowerName = fileName.toLowerCase()
|
|
if (lowerName.startsWith("dockerfile")) {
|
|
return "docker"
|
|
}
|
|
const ext = fileName.split('.').pop()
|
|
return ext || ""
|
|
}
|
|
|
|
FontLoader {
|
|
id: firaCodeFont
|
|
source: Qt.resolvedUrl("../assets/fonts/nerd-fonts/FiraCodeNerdFont-Regular.ttf")
|
|
}
|
|
|
|
StyledText {
|
|
id: icon
|
|
|
|
anchors.centerIn: parent
|
|
|
|
font.family: firaCodeFont.name
|
|
font.pixelSize: root.size
|
|
color: Theme.surfaceText
|
|
text: root.text
|
|
antialiasing: true
|
|
}
|
|
}
|