Qt system reset (#19502)
* qt factory reset
* confirmation
* better ui
old-commit-hash: c4a05ba369
commatwo_master
parent
6ab28556c8
commit
ab1b8754dc
3 changed files with 89 additions and 4 deletions
@ -0,0 +1,83 @@ |
|||||||
|
#include <QLabel> |
||||||
|
#include <QWidget> |
||||||
|
#include <QPushButton> |
||||||
|
#include <QHBoxLayout> |
||||||
|
#include <QVBoxLayout> |
||||||
|
#include <QApplication> |
||||||
|
|
||||||
|
#include "qt_window.hpp" |
||||||
|
|
||||||
|
#define USERDATA "/dev/disk/by-partlabel/userdata" |
||||||
|
|
||||||
|
|
||||||
|
void do_reset() { |
||||||
|
std::system("sudo umount " USERDATA); |
||||||
|
std::system("yes | sudo mkfs.ext4 " USERDATA); |
||||||
|
std::system("sudo reboot"); |
||||||
|
} |
||||||
|
|
||||||
|
int main(int argc, char *argv[]) { |
||||||
|
QApplication a(argc, argv); |
||||||
|
QWidget window; |
||||||
|
setMainWindow(&window); |
||||||
|
|
||||||
|
QVBoxLayout *layout = new QVBoxLayout(); |
||||||
|
layout->setContentsMargins(125, 125, 125, 125); |
||||||
|
|
||||||
|
QLabel *title = new QLabel("System Reset"); |
||||||
|
title->setStyleSheet(R"( |
||||||
|
font-size: 100px; |
||||||
|
font-weight: bold; |
||||||
|
)"); |
||||||
|
layout->addWidget(title, 0, Qt::AlignTop); |
||||||
|
|
||||||
|
QLabel *body = new QLabel("Factory reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot."); |
||||||
|
body->setWordWrap(true); |
||||||
|
body->setAlignment(Qt::AlignCenter); |
||||||
|
body->setStyleSheet(R"( |
||||||
|
font-size: 65px; |
||||||
|
)"); |
||||||
|
layout->addWidget(body, 1, Qt::AlignCenter); |
||||||
|
|
||||||
|
QHBoxLayout *btn_layout = new QHBoxLayout(); |
||||||
|
|
||||||
|
QPushButton *cancel_btn = new QPushButton("Cancel"); |
||||||
|
btn_layout->addWidget(cancel_btn, 0, Qt::AlignLeft); |
||||||
|
QObject::connect(cancel_btn, SIGNAL(released()), &a, SLOT(quit())); |
||||||
|
|
||||||
|
QPushButton *confirm_btn = new QPushButton("Confirm"); |
||||||
|
btn_layout->addWidget(confirm_btn, 0, Qt::AlignRight); |
||||||
|
QObject::connect(confirm_btn, &QPushButton::released, [=]() { |
||||||
|
QString confirm_txt = "Are you sure you want to reset your device?"; |
||||||
|
if (body->text() != confirm_txt) { |
||||||
|
body->setText(confirm_txt); |
||||||
|
} else { |
||||||
|
body->setText("Resetting device..."); |
||||||
|
cancel_btn->hide(); |
||||||
|
confirm_btn->hide(); |
||||||
|
#ifdef __aarch64__ |
||||||
|
do_reset(); |
||||||
|
#endif |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
layout->addLayout(btn_layout); |
||||||
|
|
||||||
|
window.setLayout(layout); |
||||||
|
window.setStyleSheet(R"( |
||||||
|
* { |
||||||
|
color: white; |
||||||
|
background-color: black; |
||||||
|
} |
||||||
|
QPushButton { |
||||||
|
padding: 50px; |
||||||
|
padding-right: 100px; |
||||||
|
padding-left: 100px; |
||||||
|
border: 7px solid white; |
||||||
|
border-radius: 20px; |
||||||
|
font-size: 50px; |
||||||
|
} |
||||||
|
)"); |
||||||
|
|
||||||
|
return a.exec(); |
||||||
|
} |
Loading…
Reference in new issue