summaryrefslogtreecommitdiff
path: root/raveos-center/raveos_center/oldalak/attekintes.py
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-center/raveos_center/oldalak/attekintes.py')
-rw-r--r--raveos-center/raveos_center/oldalak/attekintes.py262
1 files changed, 262 insertions, 0 deletions
diff --git a/raveos-center/raveos_center/oldalak/attekintes.py b/raveos-center/raveos_center/oldalak/attekintes.py
new file mode 100644
index 0000000..9ebc848
--- /dev/null
+++ b/raveos-center/raveos_center/oldalak/attekintes.py
@@ -0,0 +1,262 @@
+from datetime import datetime
+
+from PyQt6.QtCore import Qt, QUrl
+from PyQt6.QtGui import QDesktopServices
+from PyQt6.QtWidgets import QHBoxLayout, QMessageBox, QProgressBar, QPushButton, QVBoxLayout, QWidget
+
+from raveos_center import gaming, muveletek, rendszerinfo
+from raveos_center.elemek import Kartya, Oldal, Racs, cimke, frissit_stilus, gomb
+from raveos_center.hatter import ervenytelenit, gyorsitott, tarolt
+
+AZON = "attekintes"
+MENU = "Áttekintés"
+IKON = "attekintes"
+
+GYORS = [
+ ("01", "Alkalmazás telepítése", "Böngészés kategóriák szerint", "alkalmazasok", ()),
+ ("02", "Rendszerfrissítés", "pacman + AUR + Flatpak", "frissitesek", ()),
+ ("03", "Driverek", "GPU, Wi-Fi, kontrollerek", "rendszer", ("driverek",)),
+ ("04", "Takarítás", "Cache, árva csomagok", "rendszer", ("karbantartas",)),
+ ("05", "Gaming tweakek", "GameMode, Proton, MangoHud", "rendszer", ("gaming",)),
+ ("06", "Visszaállítás", "Snapshot betöltése", "rendszer", ("snapshotok",)),
+]
+
+KOZOSSEG = [
+ ("rp1.hu", "https://rp1.hu"),
+ ("Discord", "https://discord.gg/gSdVMXRFQc"),
+ ("Stream", "https://kick.com/rpslair"),
+]
+
+
+class Csempe(QPushButton):
+ def __init__(self, kod, cim, alcim):
+ super().__init__()
+ self.setObjectName("csempe")
+ self.setCursor(Qt.CursorShape.PointingHandCursor)
+ doboz = QVBoxLayout(self)
+ doboz.setContentsMargins(18, 18, 18, 18)
+ doboz.setSpacing(4)
+ self.kod = cimke(kod, "monozold")
+ doboz.addWidget(self.kod)
+ doboz.addStretch(1)
+ self.cim = cimke(cim)
+ self.cim.setStyleSheet("font-size: 15px; font-weight: 600;")
+ doboz.addWidget(self.cim)
+ self.alcim = cimke(alcim, "halvany", True)
+ doboz.addWidget(self.alcim)
+ for c in (self.kod, self.cim, self.alcim):
+ c.setAttribute(Qt.WidgetAttribute.WA_TransparentForMouseEvents)
+
+
+def allapotkartya(cim):
+ kartya = Kartya(cim)
+ ertek = cimke("...", "nagyszam")
+ kartya.elrendezes.addWidget(ertek)
+ return kartya, ertek
+
+
+class Attekintes(Oldal):
+ def __init__(self, kozpont):
+ super().__init__(kozpont, "ÜDV ÚJRA", "Áttekintés")
+ self.frissites_gomb = self.fejlec_gomb(gomb("Frissítés most", fo=True))
+ self.frissites_gomb.clicked.connect(lambda: self.kozpont.mutat("frissitesek"))
+ self.snapshot_gomb = self.fejlec_gomb(gomb("Snapshot készítése"))
+ self.snapshot_gomb.clicked.connect(lambda: self.kozpont.mutat("rendszer", "snapshotok", "uj"))
+
+ allapot = Racs(220)
+ k, self.frissites_szam = allapotkartya("Frissítések")
+ self.frissites_szam.setProperty("zold", True)
+ self.frissites_reszlet = cimke("ellenőrzés...", "masodlagos")
+ k.elrendezes.addWidget(self.frissites_reszlet)
+ allapot.hozzaad(k)
+
+ k, self.snapshot_ertek = allapotkartya("Utolsó snapshot")
+ self.snapshot_reszlet = cimke("", "masodlagos")
+ k.elrendezes.addWidget(self.snapshot_reszlet)
+ allapot.hozzaad(k)
+
+ k, self.lemez_ertek = allapotkartya("Lemez")
+ self.lemez_sav = QProgressBar()
+ self.lemez_sav.setObjectName("sav")
+ self.lemez_sav.setTextVisible(False)
+ self.lemez_sav.setFixedHeight(6)
+ k.elrendezes.addWidget(self.lemez_sav)
+ allapot.hozzaad(k)
+
+ k, self.gaming_ertek = allapotkartya("Gaming mód")
+ self.gaming_adat = None
+ self.gaming_gomb = gomb("...", kicsi=True)
+ self.gaming_gomb.clicked.connect(self._gaming_valt)
+ k.elrendezes.addWidget(self.gaming_gomb, 0, Qt.AlignmentFlag.AlignLeft)
+ allapot.hozzaad(k)
+ self.torzs.addWidget(allapot)
+
+ also = QHBoxLayout()
+ also.setSpacing(24)
+ bal = QVBoxLayout()
+ bal.setSpacing(16)
+ bal.addWidget(cimke("GYORS MŰVELETEK", "h2"))
+ self.gyors = Racs(180, 12)
+ self.csempek = []
+ for kod, cim, alcim, cel, al in GYORS:
+ csempe = Csempe(kod, cim, alcim)
+ csempe.clicked.connect(lambda _=False, c=cel, a=al: self.kozpont.mutat(c, *a))
+ self.csempek.append((csempe, cel, al))
+ self.gyors.hozzaad(csempe)
+ bal.addWidget(self.gyors)
+ bal.addStretch(1)
+ also.addLayout(bal, 2)
+
+ jobb = QVBoxLayout()
+ jobb.setSpacing(16)
+ jobb.addWidget(cimke("RENDSZER", "h2"))
+ self.info = Kartya(terkoz=0, margo=20)
+ self.info.elrendezes.setContentsMargins(20, 8, 20, 8)
+ self.info_sorok = {}
+ for kulcs in ("Kernel", "Asztal", "CPU", "GPU", "Memória", "Fájlrendszer", "Uptime"):
+ sor = QWidget()
+ sl = QHBoxLayout(sor)
+ sl.setContentsMargins(0, 12, 0, 12)
+ sl.addWidget(cimke(kulcs, "monohalvany"))
+ sl.addStretch(1)
+ ertek = cimke("...", "mono")
+ ertek.setAlignment(Qt.AlignmentFlag.AlignRight)
+ ertek.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)
+ sl.addWidget(ertek)
+ self.info_sorok[kulcs] = ertek
+ self.info.elrendezes.addWidget(sor)
+ jobb.addWidget(self.info)
+
+ kozosseg = Kartya("Közösség", terkoz=12)
+ nev = cimke("RaveCore")
+ nev.setStyleSheet("font-size: 15px; font-weight: 600;")
+ kozosseg.elrendezes.addWidget(nev)
+ kozosseg.elrendezes.addWidget(
+ cimke("Kérdésed van, vagy hibát találtál? Gyere a közösségbe, vagy írj nekünk hibajegyet.", "masodlagos", True)
+ )
+ linkek = QHBoxLayout()
+ linkek.setSpacing(16)
+ for szoveg, cim in KOZOSSEG:
+ link = cimke(f'<a href="{cim}" style="color:#62a052; text-decoration:none">{szoveg}</a>', "link")
+ link.setOpenExternalLinks(True)
+ linkek.addWidget(link)
+ self.hibajegy_link = cimke('<a href="#" style="color:#62a052; text-decoration:none">Hibajegy</a>', "link")
+ self.hibajegy_link.linkActivated.connect(lambda _: self.kozpont.mutat("visszajelzes"))
+ linkek.addWidget(self.hibajegy_link)
+ linkek.addStretch(1)
+ kozosseg.elrendezes.addLayout(linkek)
+ jobb.addWidget(kozosseg)
+ jobb.addStretch(1)
+ also.addLayout(jobb, 1)
+ self.torzs.addLayout(also)
+ self.torzs.addStretch(1)
+
+ def megjelenik(self, *_):
+ self.frissites_gomb.setEnabled(self.kozpont.van("frissitesek"))
+ self.snapshot_gomb.setEnabled(self.kozpont.van("rendszer", "snapshotok"))
+ if tarolt("gaming") is None:
+ self.gaming_gomb.setEnabled(False)
+ gyorsitott("gaming", gaming.allapot, kesz=self._gaming_kesz, kor=30)
+ for csempe, cel, al in self.csempek:
+ elerheto = self.kozpont.van(cel, *al)
+ csempe.setEnabled(elerheto)
+ csempe.setToolTip("" if elerheto else "Hamarosan")
+ self._lemez()
+ gyorsitott("info", self._info_gyujt, kesz=self._info_kesz, kor=300)
+ gyorsitott("frissitesek", rendszerinfo.frissitesek, kesz=self._frissites_kesz, hiba=self._frissites_hiba, kor=60)
+ gyorsitott("snapshot", rendszerinfo.utolso_snapshot, kesz=self._snapshot_kesz, kor=60)
+
+ def _gaming_kesz(self, adat):
+ self.gaming_adat = adat
+ aktiv = gaming.gaming_mod_aktiv(adat)
+ self.gaming_ertek.setText("BEKAPCSOLVA" if aktiv else "KIKAPCSOLVA")
+ self.gaming_ertek.setProperty("zold", aktiv)
+ frissit_stilus(self.gaming_ertek)
+ self.gaming_gomb.setText("Kikapcsolás" if aktiv else "Bekapcsolás")
+ self.gaming_gomb.setProperty("fo", not aktiv)
+ frissit_stilus(self.gaming_gomb)
+ valtozas = gaming.gaming_mod_valtozasok(adat, not aktiv)
+ self.gaming_gomb.setEnabled(bool(valtozas) and muveletek.helper_elerheto())
+ self.gaming_gomb.setToolTip(
+ "" if valtozas else "Ezen a gépen a Gaming mód elemei nem kapcsolhatók ki, a GameMode a Rendszer > Gaming fülön távolítható el."
+ )
+
+ def _gaming_valt(self):
+ if not self.gaming_adat:
+ return
+ from raveos_center.oldalak.rendszer.gaming import alkalmaz
+
+ self.gaming_gomb.setEnabled(False)
+ aktiv = gaming.gaming_mod_aktiv(self.gaming_adat)
+ hiba = alkalmaz(self, gaming.gaming_mod_valtozasok(self.gaming_adat, not aktiv))
+ if hiba:
+ QMessageBox.warning(self, "Gaming mód", hiba)
+ ervenytelenit("gaming")
+ gyorsitott("gaming", gaming.allapot, kesz=self._gaming_kesz)
+
+ def _lemez(self):
+ hasznalt, ossz = rendszerinfo.lemez()
+ self.lemez_ertek.setText(f"{hasznalt / 1e9:.0f} / {ossz / 1e9:.0f} GB")
+ self.lemez_sav.setValue(int(hasznalt * 100 / ossz) if ossz else 0)
+
+ @staticmethod
+ def _info_gyujt():
+ gpu = ", ".join(rendszerinfo.gpuk()) or "ismeretlen"
+ driver = ", ".join(rendszerinfo.gpu_driverek())
+ return {
+ "Kernel": rendszerinfo.kernel(),
+ "Asztal": rendszerinfo.asztal(),
+ "CPU": rendszerinfo.cpu(),
+ "GPU": f"{gpu} · {driver}" if driver else gpu,
+ "Memória": rendszerinfo.memoria(),
+ "Fájlrendszer": rendszerinfo.fajlrendszer(),
+ "Uptime": rendszerinfo.uzemido(),
+ }
+
+ def _info_kesz(self, adat):
+ for kulcs, ertek in adat.items():
+ self.info_sorok[kulcs].setText(ertek)
+
+ def _frissites_kesz(self, csomagok):
+ szam = len(csomagok)
+ self.kozpont.jelveny("frissitesek", szam)
+ if not szam:
+ self.frissites_szam.setText("NAPRAKÉSZ")
+ self.frissites_reszlet.setText("nincs elérhető frissítés")
+ return
+ self.frissites_szam.setText(f"{szam} ELÉRHETŐ")
+ reszek = []
+ ujrainditos = sum(1 for c in csomagok if c["ujrainditas"])
+ aur = sum(1 for c in csomagok if c["forras"] == "aur")
+ flatpak = sum(1 for c in csomagok if c["forras"] == "flatpak")
+ if ujrainditos:
+ reszek.append(f"{ujrainditos} újraindítást igényel")
+ if aur:
+ reszek.append(f"{aur} AUR")
+ if flatpak:
+ reszek.append(f"{flatpak} Flatpak")
+ self.frissites_reszlet.setText(" · ".join(reszek) or "csak hivatalos csomagok")
+
+ def _frissites_hiba(self, _):
+ self.frissites_szam.setText("-")
+ self.frissites_reszlet.setText("az ellenőrzés nem sikerült")
+
+ def _snapshot_kesz(self, snapshot):
+ if snapshot is None:
+ self.snapshot_ertek.setText("-")
+ self.snapshot_reszlet.setText("a snapper nem érhető el")
+ return
+ if not snapshot:
+ self.snapshot_ertek.setText("NINCS")
+ self.snapshot_reszlet.setText("még nem készült snapshot")
+ return
+ try:
+ ido = datetime.fromisoformat(snapshot.get("date", ""))
+ nap = (datetime.now() - ido).days
+ self.snapshot_ertek.setText("MA" if nap == 0 else f"{nap} NAPJA")
+ except (TypeError, ValueError):
+ self.snapshot_ertek.setText("?")
+ self.snapshot_reszlet.setText(f"btrfs · {snapshot.get('description') or snapshot.get('type', '')}")
+
+
+OLDAL = Attekintes