-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmainwindow.cpp
246 lines (199 loc) · 8.82 KB
/
mainwindow.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
textLaden();
systemspracheEinstellen();
bildLaden();
graphikenLaden();
//Pulsgeber für die automatische Aktualisierung
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(aktualisierungsPulsschlag()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
textLaden();
bildLaden();
}
QString MainWindow::getDesktopBackgroundFileName() {
qDebug() << "Funktion getDesktopBackgroundFileName() aufgerufen ";
//Öffnen der Registry-Schlüssel
QSettings registrySettings("HKEY_CURRENT_USER\\Control Panel\\Desktop", QSettings::NativeFormat);
//QString zur Aufnahme des neuen Pfades
QString wallpaperPath = "";
//Lesen des Werts TranscodedImageCache
wallpaperPath = registrySettings.value("TranscodedImageCache").toString();
//Entfernen möglicher Nullterminierungen
wallpaperPath.remove(QChar('\0'));
//Bereinigen des Pfads von weiteren unerwünschten Zeichen
wallpaperPath = cleanUpPath(wallpaperPath);
//Rückgabe des Pfads
qDebug() << "Pfad: " << wallpaperPath;
return wallpaperPath;
}
//Eingelesenen Registry-Wert von Zeichen außerhalb des eigentlichen Bildpfades bereinigen
QString MainWindow::cleanUpPath(const QString &path) {
QString cleanedPath;
bool foundDriveLetter = false;
for (int i = 0; i < path.length(); ++i) {
QChar ch = path.at(i);
//Abfrage ob Laufwerksbuchstabe gefolgt von Doppelpunkt und Rückstrich gefunden wurde
if (ch.isUpper() && i + 2 < path.length() && path.at(i + 1) == QLatin1Char(':') && path.at(i + 2) == QLatin1Char('\\') && !foundDriveLetter){
foundDriveLetter = true;
cleanedPath.clear();
}
cleanedPath.append(ch);
}
return cleanedPath;
}
void MainWindow::on_pushButton_2_clicked()
{
QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(ui->lineEdit->text());
}
void MainWindow::on_pushButton_3_clicked()
{
//Nehmen wir den Wert aus dem Label
QString imagePath = ui->lineEdit->text();
//Überprüfen, ob der Dateipfad nicht leer ist
if (!imagePath.isEmpty()) {
QDesktopServices::openUrl(QUrl::fromLocalFile(imagePath));
}
}
//Knopf zum Schließen des Programms
void MainWindow::on_pushButton_4_clicked()
{
this->close();
}
void MainWindow::aktualisierungsPulsschlag()
{
textLaden();
bildLaden();
}
//Bild in Anzeigetafel laden
void MainWindow::bildLaden(){
QSize neueGroesse = ui->pushButton_5->size();
desktopBackground.load(getDesktopBackgroundFileName());
desktopBackground = desktopBackground.scaled(neueGroesse, Qt::KeepAspectRatio);
ui->pushButton_5->setText("");
ui->pushButton_5->setIcon(QIcon(desktopBackground));
ui->pushButton_5->setIconSize(desktopBackground.size());
}
//Text in Textfeld laden
void MainWindow::textLaden(){
ui->lineEdit->setText(getDesktopBackgroundFileName());
//Wenn der Pfad im Feld ist, aktiviere Knöpfe zum Kopieren und Öffnen
if (ui->lineEdit->text() != ""){
ui->pushButton_2->setEnabled(true);
ui->pushButton_3->setEnabled(true);
}
}
void MainWindow::resizeEvent(QResizeEvent *event) {
QSize neueGroesse = ui->pushButton_5->size();
//Lade das Bild aus dem Textfeld
desktopBackground.load(ui->lineEdit->text());
desktopBackground = desktopBackground.scaled(neueGroesse, Qt::KeepAspectRatio);
ui->pushButton_5->setText("");
ui->pushButton_5->setIcon(QIcon(desktopBackground));
ui->pushButton_5->setIconSize(desktopBackground.size());
QMainWindow::resizeEvent(event); //Rufe die Basisimplementierung auf
}
//Häkchen für die automatische Aktualisierung
void MainWindow::on_checkBox_stateChanged(int arg1)
{
if(ui->checkBox->isChecked()){
timer->start(1000);
} else{
timer->stop();
}
}
void MainWindow::graphikenLaden(){
//Größen für die Flaggen festlegen
QSize neueGroesseDeutsch = ui->pushButtonDeutsch->size();
QSize neueGroesseFranzoesisch = ui->pushButtonFranzoesisch->size();
QSize neueGroesseEnglisch = ui->pushButtonEnglisch->size();
//Texte leeren
ui->pushButtonDeutsch->setText("");
ui->pushButtonFranzoesisch->setText("");
ui->pushButtonEnglisch->setText("");
//Flaggen hissen und Größen anpassen
ui->pushButtonDeutsch->setIcon(QIcon(":/new/bilder/bundesflagge.jpg"));
ui->pushButtonDeutsch->setIconSize(neueGroesseDeutsch);
ui->pushButtonFranzoesisch->setIcon(QIcon(":/new/bilder/drapeautricolore.jpg"));
ui->pushButtonFranzoesisch->setIconSize(neueGroesseFranzoesisch);
ui->pushButtonEnglisch->setIcon(QIcon(":/new/bilder/unionjack.jpg"));
ui->pushButtonEnglisch->setIconSize(neueGroesseEnglisch);
//Flaggen an Knöpfe anpassen
ui->pushButtonDeutsch->setStyleSheet("QPushButton { border-image: url(:/new/bilder/bundesflagge.jpg) 0 0 0 0 stretch stretch; }");
ui->pushButtonFranzoesisch->setStyleSheet("QPushButton { border-image: url(:/new/bilder/drapeautricolore.jpg) 0 0 0 0 stretch stretch; }");
ui->pushButtonEnglisch->setStyleSheet("QPushButton { border-image: url(:/new/bilder/unionjack.jpg) 0 0 0 0 stretch stretch; }");
}
void MainWindow::on_pushButtonEnglisch_clicked()
{
ui->pushButton->setText("Read path");
ui->pushButton->setToolTip("Reads the path of the current desktop wallpaper from the registry.");
ui->pushButton_2->setText("Copy path");
ui->pushButton_2->setToolTip("Copies the path to the clipboard.");
ui->pushButton_3->setText("Open picture");
ui->pushButton_3->setToolTip("Opens the image in the system image viewer.");
ui->pushButton_4->setText("Quit");
ui->pushButton_4->setToolTip("Closes the programme.");
//ui->pushButton_5->setText("Image");
ui->pushButton_5->setToolTip("Click to open image in system image viewer.");
ui->checkBox->setText("Reload automatically");
ui->checkBox->setToolTip("If activated, the programme automatically reads the current background image every second.");
qDebug() << "Englisch festgelegt";
}
void MainWindow::on_pushButtonDeutsch_clicked()
{
ui->pushButton->setText("Pfad auslesen");
ui->pushButton->setToolTip("Liest den Pfad des aktuellen Desktop-Hintergrundbildes aus der Registry.");
ui->pushButton_2->setText("Pfad kopieren");
ui->pushButton_2->setToolTip("Kopiert den Pfad in die Zwischenablage.");
ui->pushButton_3->setText("Bild öffnen");
ui->pushButton_3->setToolTip("Öffnet das Bild im System-Bildbetrachter.");
ui->pushButton_4->setText("Beenden");
ui->pushButton_4->setToolTip("Schließt das Programm.");
//ui->pushButton_5->setText("Bild");
ui->pushButton_5->setToolTip("Klicken um Bild im System-Bildbetrachter zu öffnen.");
ui->checkBox->setText("Kontinuierlich abgleichen");
ui->checkBox->setToolTip("Wenn aktiviert, liest das Programm das aktuelle Hintergrundbild selbständig im Sekundentakt ein.");
qDebug() << "Deutsch festgelegt";
}
void MainWindow::on_pushButtonFranzoesisch_clicked()
{
ui->pushButton->setText("Lire le chemin");
ui->pushButton->setToolTip("Lit le chemin du fond d'écran actuel à partir du registre.");
ui->pushButton_2->setText("Copier le chemin");
ui->pushButton_2->setToolTip("Copie le chemin dans le presse-papiers.");
ui->pushButton_3->setText("Ouvrir l'image");
ui->pushButton_3->setToolTip("Ouvre l'image dans la visionneuse d'images système.");
ui->pushButton_4->setText("Quitter");
ui->pushButton_4->setToolTip("Ferme le programme.");
//ui->pushButton_5->setText("Image");
ui->pushButton_5->setToolTip("Cliquez pour ouvrir l'image dans la visionneuse d'images système.");
ui->checkBox->setText("Synchroniser automatiquement");
ui->checkBox->setToolTip("Lorsqu'il est activé, le programme lit automatiquement l'arrière-plan actuel à intervalles d'une seconde.");
qDebug() << "Französisch festgelegt";
}
void MainWindow::systemspracheEinstellen(){
qDebug() << "Spracheinstellung aufgerufen";
QLocale systemLocale = QLocale::system();
if (systemLocale.language() == QLocale::German) {
on_pushButtonDeutsch_clicked();
} else if (systemLocale.language() == QLocale::English) {
on_pushButtonEnglisch_clicked();
} else if (systemLocale.language() == QLocale::French){
on_pushButtonFranzoesisch_clicked();
} else {
qDebug() << "Systemsprache nicht verfügbar";
on_pushButtonDeutsch_clicked();
}
}