1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-12 08:42:13 -04:00

launcher v2: performance optimizations

- Use ListView in all tab
- use filesystem cache to speed up first launch
- apply highlights to visible models
This commit is contained in:
bbedward
2026-02-10 14:56:29 -05:00
parent 46a2f6f0d8
commit 5342647bfb
10 changed files with 460 additions and 332 deletions

View File

@@ -33,21 +33,6 @@ Rectangle {
}
}
function highlightText(text, query, baseColor) {
if (!text || !query || query.length === 0)
return text;
var lowerText = text.toLowerCase();
var lowerQuery = query.toLowerCase();
var idx = lowerText.indexOf(lowerQuery);
if (idx === -1)
return text;
var before = text.substring(0, idx);
var match = text.substring(idx, idx + query.length);
var after = text.substring(idx + query.length);
var highlightColor = Theme.primary;
return '<span style="color:' + baseColor + '">' + before + '</span>' + '<span style="color:' + highlightColor + '; font-weight:600">' + match + '</span>' + '<span style="color:' + baseColor + '">' + after + '</span>';
}
width: parent?.width ?? 200
height: 52
color: isSelected ? Theme.primaryPressed : isHovered ? Theme.primaryHoverLight : "transparent"
@@ -110,14 +95,8 @@ Rectangle {
Text {
width: parent.width
text: {
var query = root.controller?.searchQuery ?? "";
var name = root.item?.name ?? "";
if (!query)
return name;
return root.highlightText(name, query, Theme.surfaceText);
}
textFormat: root.controller?.searchQuery ? Text.RichText : Text.PlainText
text: root.item?._hName ?? root.item?.name ?? ""
textFormat: root.item?._hRich ? Text.RichText : Text.PlainText
font.pixelSize: Theme.fontSizeMedium
font.weight: Font.Medium
font.family: Theme.fontFamily
@@ -128,16 +107,8 @@ Rectangle {
Text {
width: parent.width
text: {
var query = root.controller?.searchQuery ?? "";
var subtitle = root.item?.subtitle ?? "";
if (!subtitle)
return "";
if (!query)
return subtitle;
return root.highlightText(subtitle, query, Theme.surfaceVariantText);
}
textFormat: root.controller?.searchQuery ? Text.RichText : Text.PlainText
text: root.item?._hSub ?? root.item?.subtitle ?? ""
textFormat: root.item?._hRich ? Text.RichText : Text.PlainText
font.pixelSize: Theme.fontSizeSmall
font.family: Theme.fontFamily
color: Theme.surfaceVariantText
@@ -193,7 +164,7 @@ Rectangle {
}
Rectangle {
visible: root.item?.type && root.item.type !== "app" && root.item.type !== "plugin_browse"
visible: !!root.item?.type && root.item.type !== "app" && root.item.type !== "plugin_browse"
width: typeBadge.implicitWidth + Theme.spacingS * 2
height: 20
radius: 10