diff options
Diffstat (limited to 'raveos-center/raveos_center/oldalak/attekintes.py')
| -rw-r--r-- | raveos-center/raveos_center/oldalak/attekintes.py | 262 |
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 |