Skip to content

Commit c9dae39

Browse files
committed
Fix QML diagnostics and wire backend properties
1 parent a99601a commit c9dae39

4 files changed

Lines changed: 104 additions & 68 deletions

File tree

src/main.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include <QIcon>
33
#include <QQmlApplicationEngine>
44
#include <QQmlContext>
5+
#include <QVariant>
56

67
#include "backend/monitor/cpumonitor.h"
78
#include "backend/monitor/gpumonitor.h"
@@ -38,6 +39,17 @@ int main(int argc, char *argv[]) {
3839
// EN: The QML engine loads the UI and injected context objects.
3940
QQmlApplicationEngine engine;
4041

42+
// TR: Ana pencerenin gerekli backend baglantilarini baslangicta enjekte et.
43+
// EN: Inject required backend bindings into the main QML root object.
44+
engine.setInitialProperties({
45+
{"nvidiaDetector", QVariant::fromValue(&detector)},
46+
{"nvidiaInstaller", QVariant::fromValue(&installer)},
47+
{"nvidiaUpdater", QVariant::fromValue(&updater)},
48+
{"cpuMonitor", QVariant::fromValue(&cpuMonitor)},
49+
{"gpuMonitor", QVariant::fromValue(&gpuMonitor)},
50+
{"ramMonitor", QVariant::fromValue(&ramMonitor)},
51+
});
52+
4153
engine.rootContext()->setContextProperty("nvidiaDetector", &detector);
4254
engine.rootContext()->setContextProperty("nvidiaInstaller", &installer);
4355
engine.rootContext()->setContextProperty("nvidiaUpdater", &updater);

src/qml/Main.qml

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1-
import QtQuick
2-
import QtQuick.Controls
3-
import QtQuick.Layouts
1+
import QtQuick 2.15
2+
import QtQuick.Controls 2.15
3+
import QtQuick.Layouts 1.15
4+
import "pages"
45

56
ApplicationWindow {
67
id: root
8+
property var nvidiaDetector
9+
property var nvidiaInstaller
10+
property var nvidiaUpdater
11+
property var cpuMonitor
12+
property var gpuMonitor
13+
property var ramMonitor
14+
715
visible: true
816
width: 980
917
height: 640
1018
title: "ro-Control"
11-
readonly property bool darkMode: Qt.styleHints.colorScheme === Qt.Dark
19+
readonly property bool darkMode: Application.styleHints.colorScheme === Qt.ColorScheme.Dark
1220
color: darkMode ? "#141822" : "#f4f6fb"
1321

1422
ColumnLayout {
@@ -77,8 +85,16 @@ ApplicationWindow {
7785
Layout.fillHeight: true
7886
currentIndex: tabs.currentIndex
7987

80-
DriverPage {}
81-
MonitorPage {}
88+
DriverPage {
89+
nvidiaDetector: root.nvidiaDetector
90+
nvidiaInstaller: root.nvidiaInstaller
91+
nvidiaUpdater: root.nvidiaUpdater
92+
}
93+
MonitorPage {
94+
cpuMonitor: root.cpuMonitor
95+
gpuMonitor: root.gpuMonitor
96+
ramMonitor: root.ramMonitor
97+
}
8298
SettingsPage {
8399
darkMode: root.darkMode
84100
}

src/qml/pages/DriverPage.qml

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import QtQuick
2-
import QtQuick.Controls
3-
import QtQuick.Layouts
1+
import QtQuick 2.15
2+
import QtQuick.Controls 2.15
3+
import QtQuick.Layouts 1.15
44

55
Item {
66
id: page
7+
required property var nvidiaDetector
8+
required property var nvidiaInstaller
9+
required property var nvidiaUpdater
710

811
ColumnLayout {
912
anchors.fill: parent
@@ -17,33 +20,33 @@ Item {
1720
}
1821

1922
Label {
20-
text: "GPU: " + (nvidiaDetector.gpuFound ? nvidiaDetector.gpuName : "Tespit edilmedi")
23+
text: "GPU: " + (page.nvidiaDetector.gpuFound ? page.nvidiaDetector.gpuName : "Tespit edilmedi")
2124
wrapMode: Text.Wrap
2225
Layout.fillWidth: true
2326
}
2427

2528
Label {
26-
text: "Aktif surucu: " + nvidiaDetector.activeDriver
29+
text: "Aktif surucu: " + page.nvidiaDetector.activeDriver
2730
wrapMode: Text.Wrap
2831
}
2932

3033
Label {
31-
text: "Surucu versiyonu: " + (nvidiaDetector.driverVersion.length > 0 ? nvidiaDetector.driverVersion : "Yok")
34+
text: "Surucu versiyonu: " + (page.nvidiaDetector.driverVersion.length > 0 ? page.nvidiaDetector.driverVersion : "Yok")
3235
}
3336

3437
Label {
35-
text: "Secure Boot: " + (nvidiaDetector.secureBootKnown ? (nvidiaDetector.secureBootEnabled ? "Acik" : "Kapali") : "Bilinmiyor")
36-
color: !nvidiaDetector.secureBootKnown ? "#8a6500" : (nvidiaDetector.secureBootEnabled ? "#c43a3a" : "#2b8a3e")
38+
text: "Secure Boot: " + (page.nvidiaDetector.secureBootKnown ? (page.nvidiaDetector.secureBootEnabled ? "Acik" : "Kapali") : "Bilinmiyor")
39+
color: !page.nvidiaDetector.secureBootKnown ? "#8a6500" : (page.nvidiaDetector.secureBootEnabled ? "#c43a3a" : "#2b8a3e")
3740
font.bold: true
3841
}
3942

4043
Label {
41-
text: "Oturum altyapisi: " + nvidiaDetector.sessionType
44+
text: "Oturum altyapisi: " + page.nvidiaDetector.sessionType
4245
font.bold: true
4346
}
4447

4548
Label {
46-
text: nvidiaDetector.waylandSession ? "Wayland icin nvidia-drm.modeset=1 parametresi otomatik uygulanir." : "X11 icin xorg-x11-drv-nvidia paketi kontrol edilip kurulur."
49+
text: page.nvidiaDetector.waylandSession ? "Wayland icin nvidia-drm.modeset=1 parametresi otomatik uygulanir." : "X11 icin xorg-x11-drv-nvidia paketi kontrol edilip kurulur."
4750
wrapMode: Text.Wrap
4851
Layout.fillWidth: true
4952
color: "#6d7384"
@@ -61,22 +64,22 @@ Item {
6164
id: verificationText
6265
anchors.fill: parent
6366
anchors.margins: 10
64-
text: nvidiaDetector.verificationReport
67+
text: page.nvidiaDetector.verificationReport
6568
wrapMode: Text.Wrap
6669
}
6770
}
6871

6972
Label {
70-
visible: nvidiaInstaller.proprietaryAgreementRequired
71-
text: nvidiaInstaller.proprietaryAgreementText
73+
visible: page.nvidiaInstaller.proprietaryAgreementRequired
74+
text: page.nvidiaInstaller.proprietaryAgreementText
7275
color: "#8a6500"
7376
wrapMode: Text.Wrap
7477
Layout.fillWidth: true
7578
}
7679

7780
CheckBox {
7881
id: eulaAccept
79-
visible: nvidiaInstaller.proprietaryAgreementRequired
82+
visible: page.nvidiaInstaller.proprietaryAgreementRequired
8083
text: "Lisans/sozlesme kosullarini kabul ediyorum"
8184
}
8285

@@ -86,21 +89,21 @@ Item {
8689

8790
Button {
8891
text: "Kapali Kaynak Surucu Kur"
89-
enabled: !nvidiaInstaller.proprietaryAgreementRequired || eulaAccept.checked
90-
onClicked: nvidiaInstaller.installProprietary(eulaAccept.checked)
92+
enabled: !page.nvidiaInstaller.proprietaryAgreementRequired || eulaAccept.checked
93+
onClicked: page.nvidiaInstaller.installProprietary(eulaAccept.checked)
9194
}
9295

9396
Button {
9497
text: "Nouveau Surucusu Kur"
9598
onClicked: {
9699
logArea.append("Nouveau surucusu kurulumu baslatildi...");
97-
nvidiaInstaller.installOpenSource();
100+
page.nvidiaInstaller.installOpenSource();
98101
}
99102
}
100103

101104
Button {
102105
text: "Deep Clean"
103-
onClicked: nvidiaInstaller.deepClean()
106+
onClicked: page.nvidiaInstaller.deepClean()
104107
}
105108
}
106109

@@ -113,19 +116,19 @@ Item {
113116
text: "Guncelleme Kontrol Et"
114117
onClicked: {
115118
logArea.append("Guncelleme kontrolu istendi...");
116-
nvidiaUpdater.checkForUpdate();
119+
page.nvidiaUpdater.checkForUpdate();
117120
}
118121
}
119122

120123
Button {
121124
text: "Guncellemeyi Uygula"
122-
enabled: nvidiaUpdater.updateAvailable
123-
onClicked: nvidiaUpdater.applyUpdate()
125+
enabled: page.nvidiaUpdater.updateAvailable
126+
onClicked: page.nvidiaUpdater.applyUpdate()
124127
}
125128

126129
Label {
127-
visible: nvidiaUpdater.updateAvailable
128-
text: "Yeni surum: " + nvidiaUpdater.latestVersion
130+
visible: page.nvidiaUpdater.updateAvailable
131+
text: "Yeni surum: " + page.nvidiaUpdater.latestVersion
129132
color: "#8a6500"
130133
}
131134
}
@@ -139,16 +142,16 @@ Item {
139142
text: "Yeniden Tara"
140143
onClicked: {
141144
logArea.append("Sistem yeniden taraniyor...");
142-
nvidiaDetector.refresh();
143-
nvidiaInstaller.refreshProprietaryAgreement();
144-
nvidiaUpdater.checkForUpdate();
145+
page.nvidiaDetector.refresh();
146+
page.nvidiaInstaller.refreshProprietaryAgreement();
147+
page.nvidiaUpdater.checkForUpdate();
145148
logArea.append("Yeniden tarama tamamlandi.");
146149
}
147150
}
148151

149152
Label {
150-
text: "Mevcut nvidia surumu: " + nvidiaUpdater.currentVersion
151-
visible: nvidiaUpdater.currentVersion.length > 0
153+
text: "Mevcut nvidia surumu: " + page.nvidiaUpdater.currentVersion
154+
visible: page.nvidiaUpdater.currentVersion.length > 0
152155
}
153156
}
154157

@@ -166,40 +169,40 @@ Item {
166169
}
167170

168171
Connections {
169-
target: nvidiaInstaller
172+
target: page.nvidiaInstaller
170173
function onProgressMessage(message) {
171174
logArea.append(message);
172175
}
173176
function onInstallFinished(success, message) {
174177
logArea.append(message);
175-
nvidiaDetector.refresh();
176-
nvidiaUpdater.checkForUpdate();
177-
nvidiaInstaller.refreshProprietaryAgreement();
178+
page.nvidiaDetector.refresh();
179+
page.nvidiaUpdater.checkForUpdate();
180+
page.nvidiaInstaller.refreshProprietaryAgreement();
178181
}
179182
function onRemoveFinished(success, message) {
180183
logArea.append(message);
181-
nvidiaDetector.refresh();
182-
nvidiaInstaller.refreshProprietaryAgreement();
184+
page.nvidiaDetector.refresh();
185+
page.nvidiaInstaller.refreshProprietaryAgreement();
183186
}
184187
}
185188

186189
Connections {
187-
target: nvidiaUpdater
190+
target: page.nvidiaUpdater
188191
// TR: Updater backend mesajlarini canli log olarak UI'ye aktar.
189192
// EN: Stream updater backend messages into the live UI log.
190193
function onProgressMessage(message) {
191194
logArea.append(message);
192195
}
193196
function onUpdateFinished(success, message) {
194197
logArea.append(message);
195-
nvidiaDetector.refresh();
196-
nvidiaUpdater.checkForUpdate();
198+
page.nvidiaDetector.refresh();
199+
page.nvidiaUpdater.checkForUpdate();
197200
}
198201
}
199202

200203
Component.onCompleted: {
201-
nvidiaDetector.refresh();
202-
nvidiaUpdater.checkForUpdate();
203-
nvidiaInstaller.refreshProprietaryAgreement();
204+
page.nvidiaDetector.refresh();
205+
page.nvidiaUpdater.checkForUpdate();
206+
page.nvidiaInstaller.refreshProprietaryAgreement();
204207
}
205208
}

src/qml/pages/MonitorPage.qml

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1-
import QtQuick
2-
import QtQuick.Controls
3-
import QtQuick.Layouts
1+
import QtQuick 2.15
2+
import QtQuick.Controls 2.15
3+
import QtQuick.Layouts 1.15
44

55
Item {
6+
id: page
7+
required property var cpuMonitor
8+
required property var gpuMonitor
9+
required property var ramMonitor
10+
611
ColumnLayout {
712
anchors.fill: parent
813
anchors.margins: 20
@@ -34,19 +39,19 @@ Item {
3439
}
3540

3641
Label {
37-
text: cpuMonitor.available ? "Kullanim: " + cpuMonitor.usagePercent.toFixed(1) + "%" : "CPU verisi alinamiyor"
42+
text: page.cpuMonitor.available ? "Kullanim: " + page.cpuMonitor.usagePercent.toFixed(1) + "%" : "CPU verisi alinamiyor"
3843
}
3944

4045
ProgressBar {
4146
from: 0
4247
to: 100
43-
value: cpuMonitor.usagePercent
48+
value: page.cpuMonitor.usagePercent
4449
Layout.fillWidth: true
4550
}
4651

4752
Label {
48-
text: "Sicaklik: " + cpuMonitor.temperatureC + " C"
49-
visible: cpuMonitor.temperatureC > 0
53+
text: "Sicaklik: " + page.cpuMonitor.temperatureC + " C"
54+
visible: page.cpuMonitor.temperatureC > 0
5055
}
5156
}
5257
}
@@ -71,30 +76,30 @@ Item {
7176
}
7277

7378
Label {
74-
text: gpuMonitor.available ? (gpuMonitor.gpuName.length > 0 ? gpuMonitor.gpuName : "NVIDIA GPU") : "nvidia-smi ile veri alinamadi"
79+
text: page.gpuMonitor.available ? (page.gpuMonitor.gpuName.length > 0 ? page.gpuMonitor.gpuName : "NVIDIA GPU") : "nvidia-smi ile veri alinamadi"
7580
}
7681

7782
Label {
78-
text: "Yuk: " + gpuMonitor.utilizationPercent + "%"
79-
visible: gpuMonitor.available
83+
text: "Yuk: " + page.gpuMonitor.utilizationPercent + "%"
84+
visible: page.gpuMonitor.available
8085
}
8186

8287
ProgressBar {
8388
from: 0
8489
to: 100
85-
value: gpuMonitor.utilizationPercent
90+
value: page.gpuMonitor.utilizationPercent
8691
Layout.fillWidth: true
87-
visible: gpuMonitor.available
92+
visible: page.gpuMonitor.available
8893
}
8994

9095
Label {
91-
text: "VRAM: " + gpuMonitor.memoryUsedMiB + " / " + gpuMonitor.memoryTotalMiB + " MiB (" + gpuMonitor.memoryUsagePercent + "%)"
92-
visible: gpuMonitor.available && gpuMonitor.memoryTotalMiB > 0
96+
text: "VRAM: " + page.gpuMonitor.memoryUsedMiB + " / " + page.gpuMonitor.memoryTotalMiB + " MiB (" + page.gpuMonitor.memoryUsagePercent + "%)"
97+
visible: page.gpuMonitor.available && page.gpuMonitor.memoryTotalMiB > 0
9398
}
9499

95100
Label {
96-
text: "Sicaklik: " + gpuMonitor.temperatureC + " C"
97-
visible: gpuMonitor.available && gpuMonitor.temperatureC > 0
101+
text: "Sicaklik: " + page.gpuMonitor.temperatureC + " C"
102+
visible: page.gpuMonitor.available && page.gpuMonitor.temperatureC > 0
98103
}
99104
}
100105
}
@@ -119,13 +124,13 @@ Item {
119124
}
120125

121126
Label {
122-
text: ramMonitor.available ? "Kullanim: " + ramMonitor.usedMiB + " / " + ramMonitor.totalMiB + " MiB (" + ramMonitor.usagePercent + "%)" : "RAM verisi alinamiyor"
127+
text: page.ramMonitor.available ? "Kullanim: " + page.ramMonitor.usedMiB + " / " + page.ramMonitor.totalMiB + " MiB (" + page.ramMonitor.usagePercent + "%)" : "RAM verisi alinamiyor"
123128
}
124129

125130
ProgressBar {
126131
from: 0
127132
to: 100
128-
value: ramMonitor.usagePercent
133+
value: page.ramMonitor.usagePercent
129134
Layout.fillWidth: true
130135
}
131136
}
@@ -137,14 +142,14 @@ Item {
137142
Button {
138143
text: "Yenile"
139144
onClicked: {
140-
cpuMonitor.refresh();
141-
gpuMonitor.refresh();
142-
ramMonitor.refresh();
145+
page.cpuMonitor.refresh();
146+
page.gpuMonitor.refresh();
147+
page.ramMonitor.refresh();
143148
}
144149
}
145150

146151
Label {
147-
text: "Guncelleme araligi: " + cpuMonitor.updateInterval + " ms"
152+
text: "Guncelleme araligi: " + page.cpuMonitor.updateInterval + " ms"
148153
color: "#6d7384"
149154
}
150155
}

0 commit comments

Comments
 (0)