summaryrefslogtreecommitdiff
path: root/raveos-plasma-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-plasma-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml')
-rw-r--r--raveos-plasma-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml243
1 files changed, 0 insertions, 243 deletions
diff --git a/raveos-plasma-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml b/raveos-plasma-theme/theme-data/sddm/sddm-rave-theme/Components/NetworkIndicator.qml
deleted file mode 100644
index bed97c8..0000000
--- a/raveos-plasma-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()
- }
-}