summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-07-27 23:57:01 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-07-28 00:02:57 +0800
commiteb23db9e822f5951780d00d016c157fcb6435cab (patch)
tree8c9737823a3c18a8b5ae55d795b263ccd00aaab1
parent16ca38e414a22f6ca97f9799496df45783978baa (diff)
Launcher(calc&ISmartCalc): cleanup and better display
-rw-r--r--config/Launcher.qml3
-rw-r--r--popups/launcher/components/Calc.qml126
-rw-r--r--popups/launcher/components/Currency.qml7
-rw-r--r--popups/launcher/components/ISmartCalc.qml2
4 files changed, 135 insertions, 3 deletions
diff --git a/config/Launcher.qml b/config/Launcher.qml
index 11a2b6e..9c94a67 100644
--- a/config/Launcher.qml
+++ b/config/Launcher.qml
@@ -54,6 +54,9 @@ Singleton {
Unit {}
},
Component {
+ Currency {}
+ },
+ Component {
App {}
},
]
diff --git a/popups/launcher/components/Calc.qml b/popups/launcher/components/Calc.qml
index 4cc45a7..6a88c9f 100644
--- a/popups/launcher/components/Calc.qml
+++ b/popups/launcher/components/Calc.qml
@@ -21,7 +21,68 @@ IComponent {
process: function () {
MathCalc.query(input);
const valid = MathCalc.result && MathCalc.result.length > 0;
- const answer = MathCalc.result;
+ const answer = MathCalc.result ? MathCalc.result
+ // 1. Calculus & Summations (Case insensitive)
+ .replace(/\bint(?:egral)?\b/gi, "∫")
+ .replace(/\bsum\b/gi, "∑")
+
+ // 2. Constants & Symbols (Case insensitive)
+ .replace(/\bpi\b/gi, "π")
+ .replace(/\btau\b/gi, "τ")
+ .replace(/\binf(?:inity)?\b/gi, "∞")
+ .replace(/\bdeg\b/gi, "°")
+
+ // 3. Roots & Exponentials (Case insensitive)
+ .replace(/\bsqrt\b/gi, "√")
+ .replace(/\bcbrt\b/gi, "∛")
+
+ // 4. Rounding & Absolute Value (Case insensitive)
+ .replace(/\bceil\(([^\)]+)\)/gi, "⌈$1⌉")
+ .replace(/\bfloor\(([^\)]+)\)/gi, "⌊$1⌋")
+ .replace(/\bround\b/gi, " ≈ ")
+
+ // 5. Comparison & Equality
+ .replace(/\s*<=\s*/g, " ≤ ")
+ .replace(/\s*>=\s*/g, " ≥ ")
+ .replace(/\s*!=\s*/g, " ≠ ")
+ .replace(/\s*==\s*/g, " = ")
+
+ // 6. Exponents to Unicode Superscripts FIRST (Case insensitive for ^n, ^x, ^y)
+ .replace(/\^0/g, "⁰")
+ .replace(/\^1/g, "¹")
+ .replace(/\^2/g, "²")
+ .replace(/\^3/g, "³")
+ .replace(/\^4/g, "⁴")
+ .replace(/\^5/g, "⁵")
+ .replace(/\^6/g, "⁶")
+ .replace(/\^7/g, "⁷")
+ .replace(/\^8/g, "⁸")
+ .replace(/\^9/g, "⁹")
+ .replace(/\^\+/g, "⁺")
+ .replace(/\^-/g, "⁻")
+ .replace(/\^n/gi, "ⁿ")
+ .replace(/\^x/gi, "ˣ")
+ .replace(/\^y/gi, "ʸ")
+
+ // 7. Kalk Number Bases
+ .replace(/_0/g, "₀")
+ .replace(/_10/g, "₁₀")
+ .replace(/_16/g, "₁₆")
+ .replace(/_1/g, "₁")
+ .replace(/_2/g, "₂")
+ .replace(/_3/g, "₃")
+ .replace(/_4/g, "₄")
+ .replace(/_5/g, "₅")
+ .replace(/_6/g, "₆")
+ .replace(/_7/g, "₇")
+ .replace(/_8/g, "₈")
+ .replace(/_9/g, "₉")
+
+ // 8. Arithmetic Operators
+ .replace(/\s*\*\s*/g, " × ")
+ .replace(/\s*\/\s*/g, " ÷ ")
+ .replace(/\s*-\s*/g, " − ")
+ .replace(/\s*\+\s*/g, " + ") : ""
return {
valid,
priority: valid,
@@ -50,7 +111,68 @@ IComponent {
clip: true
renderType: Text.CurveRendering
visible: valid
- text: input.replace(/ /g, "").replace(/\+/g, " + ").replace(/-/g, " - ").replace(/\*/g, " × ").replace(/\//g, " ÷ ").replace(/%/g, " % ").replace(/\(/g, " ( ").replace(/\)/g, " ) ")
+ text: input
+ // 1. Calculus & Summations (Case insensitive)
+ .replace(/\bint(?:egral)?\b/gi, "∫")
+ .replace(/\bsum\b/gi, "∑")
+
+ // 2. Constants & Symbols (Case insensitive)
+ .replace(/\bpi\b/gi, "π")
+ .replace(/\btau\b/gi, "τ")
+ .replace(/\binf(?:inity)?\b/gi, "∞")
+ .replace(/\bdeg\b/gi, "°")
+
+ // 3. Roots & Exponentials (Case insensitive)
+ .replace(/\bsqrt\b/gi, "√")
+ .replace(/\bcbrt\b/gi, "∛")
+
+ // 4. Rounding & Absolute Value (Case insensitive)
+ .replace(/\bceil\(([^\)]+)\)/gi, "⌈$1⌉")
+ .replace(/\bfloor\(([^\)]+)\)/gi, "⌊$1⌋")
+ .replace(/\bround\b/gi, " ≈ ")
+
+ // 5. Comparison & Equality
+ .replace(/\s*<=\s*/g, " ≤ ")
+ .replace(/\s*>=\s*/g, " ≥ ")
+ .replace(/\s*!=\s*/g, " ≠ ")
+ .replace(/\s*==\s*/g, " = ")
+
+ // 6. Exponents to Unicode Superscripts FIRST (Case insensitive for ^n, ^x, ^y)
+ .replace(/\^0/g, "⁰")
+ .replace(/\^1/g, "¹")
+ .replace(/\^2/g, "²")
+ .replace(/\^3/g, "³")
+ .replace(/\^4/g, "⁴")
+ .replace(/\^5/g, "⁵")
+ .replace(/\^6/g, "⁶")
+ .replace(/\^7/g, "⁷")
+ .replace(/\^8/g, "⁸")
+ .replace(/\^9/g, "⁹")
+ .replace(/\^\+/g, "⁺")
+ .replace(/\^-/g, "⁻")
+ .replace(/\^n/gi, "ⁿ")
+ .replace(/\^x/gi, "ˣ")
+ .replace(/\^y/gi, "ʸ")
+
+ // 7. Kalk Number Bases
+ .replace(/_0/g, "₀")
+ .replace(/_10/g, "₁₀")
+ .replace(/_16/g, "₁₆")
+ .replace(/_1/g, "₁")
+ .replace(/_2/g, "₂")
+ .replace(/_3/g, "₃")
+ .replace(/_4/g, "₄")
+ .replace(/_5/g, "₅")
+ .replace(/_6/g, "₆")
+ .replace(/_7/g, "₇")
+ .replace(/_8/g, "₈")
+ .replace(/_9/g, "₉")
+
+ // 8. Arithmetic Operators
+ .replace(/\s*\*\s*/g, " × ")
+ .replace(/\s*\/\s*/g, " ÷ ")
+ .replace(/\s*-\s*/g, " − ")
+ .replace(/\s*\+\s*/g, " + ")
font {
pixelSize: Launcher.widgetFontSize
bold: true
diff --git a/popups/launcher/components/Currency.qml b/popups/launcher/components/Currency.qml
new file mode 100644
index 0000000..28bef3e
--- /dev/null
+++ b/popups/launcher/components/Currency.qml
@@ -0,0 +1,7 @@
+import core
+
+ISmartCalc {
+ symbol: "💱"
+ category: SmartCalc.result_type == SmartCalc.Currency || SmartCalc.result_type == SmartCalc.Crypto
+ predictiveText: '→'
+}
diff --git a/popups/launcher/components/ISmartCalc.qml b/popups/launcher/components/ISmartCalc.qml
index 5474cc5..02b234a 100644
--- a/popups/launcher/components/ISmartCalc.qml
+++ b/popups/launcher/components/ISmartCalc.qml
@@ -53,7 +53,7 @@ IComponent {
clip: true
renderType: Text.CurveRendering
visible: valid
- text: input.replace(/ /g, "").replace(/\+/g, " + ").replace(/-/g, " - ").replace(/\*/g, " × ").replace(/\//g, " ÷ ").replace(/%/g, " % ").replace(/\(/g, " ( ").replace(/\)/g, " ) ")
+ text: input
font {
pixelSize: Launcher.widgetFontSize
bold: true