diff options
Diffstat (limited to 'raveos-gnome-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml')
| -rw-r--r-- | raveos-gnome-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/raveos-gnome-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml b/raveos-gnome-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml deleted file mode 100644 index bed97c8..0000000 --- a/raveos-gnome-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml +++ /dev/null @@ -1,243 +0,0 @@ -// Config created by Keyitdev https://git.rp1.hu/gabeszm/sddm-rave-theme -// Copyright (C) 2022-2025 Keyitdev -// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html - -import QtQuick 2.15 - -Row { - id: networkIndicator - - height: root.font.pointSize * 1.6 - spacing: root.font.pointSize * 0.5 - - // "none" | "wifi" | "ethernet" - property string netType: "none" - property int wifiQuality: 0 // 0-100 - property string activeIface: "" - property bool isConnected: netType !== "none" - - visible: isConnected - - property var wifiIfaces: [ - "wlan0","wlan1","wlp1s0","wlp2s0","wlp3s0", - "wlp4s0","wlp5s0","wlp6s0","wlp0s20f3" - ] - property var ethIfaces: [ - "eth0","eth1","eno1","eno2", - "enp1s0","enp2s0","enp3s0","enp4s0", - "enp0s3","enp0s31f6","ens33","ens3","ens18" - ] - - // ── Fájl olvasó ────────────────────────────────────────────────────────── - function readFile(path, cb) { - var xhr = new XMLHttpRequest() - xhr.open("GET", "file://" + path, true) - xhr.onreadystatechange = function() { - if (xhr.readyState === XMLHttpRequest.DONE) { - var res = xhr.responseText && xhr.responseText.trim() !== "" - ? xhr.responseText.trim() : null - cb(res) - } - } - xhr.send() - } - - // ── WiFi jelerősség /proc/net/wireless-ből ─────────────────────────────── - function readWifiSignal(iface) { - readFile("/proc/net/wireless", function(content) { - if (!content) { wifiQuality = 60; netCanvas.requestPaint(); return } - var lines = content.split("\n") - for (var i = 0; i < lines.length; i++) { - if (lines[i].indexOf(iface + ":") !== -1) { - // formátum: "wlan0: 0000 61. -49. -256 ..." - var parts = lines[i].trim().replace(/\./g,"").split(/\s+/) - // parts[2] = link quality (0–70 tartomány általában) - var q = parseFloat(parts[2]) || 0 - wifiQuality = Math.min(100, Math.round(q / 70 * 100)) - break - } - } - netCanvas.requestPaint() - }) - } - - // ── Interfész keresők ──────────────────────────────────────────────────── - function checkWifi(idx) { - if (idx >= wifiIfaces.length) { checkEth(0); return } - readFile("/sys/class/net/" + wifiIfaces[idx] + "/operstate", function(st) { - if (st === "up") { - activeIface = wifiIfaces[idx] - netType = "wifi" - readWifiSignal(wifiIfaces[idx]) - } else { - checkWifi(idx + 1) - } - }) - } - - // ── Ethernet keresés ───────────────────────────────────────────────────── - function checkEth(idx) { - if (idx >= ethIfaces.length) { netType = "none"; return } - readFile("/sys/class/net/" + ethIfaces[idx] + "/operstate", function(st) { - if (st === "up") { - activeIface = ethIfaces[idx] - netType = "ethernet" - netCanvas.requestPaint() - } else { - checkEth(idx + 1) - } - }) - } - - function refresh() { checkWifi(0) } - - Component.onCompleted: refresh() - - Timer { - interval: 15000 - repeat: true - running: true - onTriggered: networkIndicator.refresh() - } - - // ── Szín ───────────────────────────────────────────────────────────────── - function signalColor(q) { - if (q >= 65) return "#4ade80" // zöld – erős - if (q >= 40) return "#facc15" // sárga – közepes - return "#fb923c" // narancs – gyenge - } - - // ── UI ─────────────────────────────────────────────────────────────────── - Canvas { - id: netCanvas - width: root.font.pointSize * 2.0 - height: root.font.pointSize * 1.6 - anchors.verticalCenter: parent.verticalCenter - - // Qt Canvas nem támogatja ctx.roundRect() – saját helper - function rr(c, x, y, w, h, r) { - r = Math.min(Math.max(r, 0), Math.min(w, h) / 2) - c.beginPath() - c.moveTo(x + r, y) - c.arcTo(x + w, y, x + w, y + h, r) - c.arcTo(x + w, y + h, x, y + h, r) - c.arcTo(x, y + h, x, y, r) - c.arcTo(x, y, x + w, y, r) - c.closePath() - } - - onPaint: { - var ctx = getContext("2d") - ctx.clearRect(0, 0, width, height) - - if (networkIndicator.netType === "wifi") - drawWifi(ctx) - else if (networkIndicator.netType === "ethernet") - drawEthernet(ctx) - } - - // ── WiFi antenna ikon (4 ívelt sáv) ───────────────────────────── - function drawWifi(ctx) { - var q = networkIndicator.wifiQuality - var cx = width / 2 - var base = height * 0.96 - var dot = height * 0.08 - - // Sávok száma a minőség alapján - var bars = q >= 70 ? 4 : q >= 45 ? 3 : q >= 20 ? 2 : 1 - var col = networkIndicator.signalColor(q) - - var radii = [height*0.14, height*0.32, height*0.54, height*0.76] - var arcStart = Math.PI * 1.25 - var arcEnd = Math.PI * 1.75 - - for (var i = 0; i < 4; i++) { - ctx.beginPath() - ctx.arc(cx, base, radii[i], arcStart, arcEnd) - ctx.strokeStyle = col - ctx.globalAlpha = i < bars ? 0.90 : 0.22 - ctx.lineWidth = height * 0.10 - ctx.lineCap = "round" - ctx.stroke() - } - - // Középső pont (antenna) - ctx.beginPath() - ctx.arc(cx, base, dot, 0, Math.PI * 2) - ctx.fillStyle = col - ctx.globalAlpha = 0.95 - ctx.fill() - ctx.globalAlpha = 1.0 - } - - // ── Ethernet dugó ikon ─────────────────────────────────────────── - function drawEthernet(ctx) { - var col = "#4ade80" - var lw = height * 0.09 - ctx.strokeStyle = col - ctx.fillStyle = col - ctx.lineWidth = lw - ctx.lineCap = "round" - ctx.lineJoin = "round" - ctx.globalAlpha = 0.90 - - var cx = width / 2 - var cy = height / 2 - - // Kábel test (felső téglalap) - var bw = width * 0.70 - var bh = height * 0.38 - var bx = cx - bw / 2 - var by = cy - height * 0.30 - rr(ctx, bx, by, bw, bh, height * 0.06) - ctx.stroke() - - // 3 érintkező pin a téglalapban - var pinW = width * 0.08 - var pinH = height * 0.22 - var pinY = by - pinH + lw - var gap = bw / 4 - for (var p = 0; p < 3; p++) { - rr(ctx, bx + gap * (p + 0.5) - pinW/2, pinY, pinW, pinH, 2) - ctx.fill() - } - - // Kábel vonala lefelé - ctx.beginPath() - ctx.moveTo(cx, by + bh) - ctx.lineTo(cx, cy + height * 0.38) - ctx.stroke() - - // Dugó alap vonal - ctx.lineWidth = lw * 1.5 - ctx.beginPath() - ctx.moveTo(cx - width * 0.22, cy + height * 0.38) - ctx.lineTo(cx + width * 0.22, cy + height * 0.38) - ctx.stroke() - - ctx.globalAlpha = 1.0 - } - } - - // Felirat - Text { - id: netLabel - anchors.verticalCenter: parent.verticalCenter - text: { - if (networkIndicator.netType === "ethernet") return "Ethernet" - return networkIndicator.wifiQuality + "%" - } - color: networkIndicator.netType === "ethernet" - ? "#4ade80" - : networkIndicator.signalColor(networkIndicator.wifiQuality) - font.pointSize: root.font.pointSize * 0.82 - font.family: root.font.family - } - - onNetTypeChanged: { - netCanvas.requestPaint() - } - onWifiQualityChanged: { - netCanvas.requestPaint() - } -} |