mirror of
https://github.com/Snigdha-OS/snigdhaos-blackbox.git
synced 2025-09-20 19:45:02 +02:00
🛠️ build(_new): made with qt
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(SnigdhaOSBlackbox VERSION 0.1 LANGUAGES CXX)
|
project(snigdhaos-blackbox VERSION 0.1 LANGUAGES CXX)
|
||||||
|
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
|
||||||
@@ -22,43 +22,36 @@ set(PROJECT_SOURCES
|
|||||||
)
|
)
|
||||||
|
|
||||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
||||||
qt_add_executable(SnigdhaOSBlackbox
|
qt_add_executable(snigdhaos-blackbox
|
||||||
MANUAL_FINALIZATION
|
MANUAL_FINALIZATION
|
||||||
${PROJECT_SOURCES}
|
${PROJECT_SOURCES}
|
||||||
)
|
)
|
||||||
# Define target properties for Android with Qt 6 as:
|
# Define target properties for Android with Qt 6 as:
|
||||||
# set_property(TARGET SnigdhaOSBlackbox APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
|
# set_property(TARGET snigdhaos-blackbox APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
|
||||||
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
|
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
|
||||||
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
|
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
|
||||||
# else()
|
# else()
|
||||||
# if(ANDROID)
|
# if(ANDROID)
|
||||||
# add_library(SnigdhaOSBlackbox SHARED
|
# add_library(snigdhaos-blackbox SHARED
|
||||||
# ${PROJECT_SOURCES}
|
# ${PROJECT_SOURCES}
|
||||||
# )
|
# )
|
||||||
# Define properties for Android with Qt 5 after find_package() calls as:
|
# Define properties for Android with Qt 5 after find_package() calls as:
|
||||||
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
|
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
|
||||||
# else()
|
|
||||||
# add_executable(SnigdhaOSBlackbox
|
|
||||||
# ${PROJECT_SOURCES}
|
|
||||||
# )
|
|
||||||
# endif()
|
|
||||||
# endif()
|
|
||||||
|
|
||||||
else()
|
else()
|
||||||
add_executable(SnigdhaOSBlackbox
|
add_executable(snigdhaos-blackbox
|
||||||
${PROJECT_SOURCES}
|
${PROJECT_SOURCES}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(SnigdhaOSBlackbox PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
|
target_link_libraries(snigdhaos-blackbox PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
|
||||||
|
|
||||||
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
|
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
|
||||||
# If you are developing for iOS or macOS you should consider setting an
|
# If you are developing for iOS or macOS you should consider setting an
|
||||||
# explicit, fixed bundle identifier manually though.
|
# explicit, fixed bundle identifier manually though.
|
||||||
# if(${QT_VERSION} VERSION_LESS 6.1.0)
|
# if(${QT_VERSION} VERSION_LESS 6.1.0)
|
||||||
# set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.SnigdhaOSBlackbox)
|
# set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.snigdhaos-blackbox)
|
||||||
# endif()
|
# endif()
|
||||||
# set_target_properties(SnigdhaOSBlackbox PROPERTIES
|
# set_target_properties(snigdhaos-blackbox PROPERTIES
|
||||||
# ${BUNDLE_ID_OPTION}
|
# ${BUNDLE_ID_OPTION}
|
||||||
# MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
|
# MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
|
||||||
# MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
# MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
||||||
@@ -67,12 +60,12 @@ target_link_libraries(SnigdhaOSBlackbox PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Q
|
|||||||
# )
|
# )
|
||||||
|
|
||||||
# include(GNUInstallDirs)
|
# include(GNUInstallDirs)
|
||||||
install(TARGETS SnigdhaOSBlackbox
|
install(TARGETS snigdhaos-blackbox
|
||||||
BUNDLE DESTINATION .
|
BUNDLE DESTINATION .
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
if(QT_VERSION_MAJOR EQUAL 6)
|
if(QT_VERSION_MAJOR EQUAL 6)
|
||||||
qt_finalize_executable(SnigdhaOSBlackbox)
|
qt_finalize_executable(snigdhaos-blackbox)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -2,11 +2,10 @@
|
|||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
SnigdhaOSBlackBox w(nullptr, a.arguments().length() > 1 ? a.arguments()[1] : "");
|
SnigdhaOSBlackbox w(nullptr, a.arguments().length() > 1 ? a.arguments()[1] : "");
|
||||||
w.show();
|
w.show();
|
||||||
return a.exec();
|
return a.exec();
|
||||||
}
|
}
|
||||||
|
@@ -8,14 +8,16 @@
|
|||||||
#include <QScrollArea>
|
#include <QScrollArea>
|
||||||
#include <QTemporaryFile>
|
#include <QTemporaryFile>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QNetworkReply>
|
#include <QtNetwork/QNetworkReply>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
const char* INTERNET_CHECK_URL = "https://snigdha-os.github.io/";
|
const char* INTERNET_CHECK_URL = "https://snigdha-os.github.io/";
|
||||||
|
|
||||||
SnigdhaOSBlackBox::SnigdhaOSBlackBox(QWidget *parent, QString state)
|
|
||||||
|
|
||||||
|
SnigdhaOSBlackbox::SnigdhaOSBlackbox(QWidget *parent, QString state)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui::SnigdhaOSBlackBox)
|
, ui(new Ui::SnigdhaOSBlackbox)
|
||||||
{
|
{
|
||||||
this->setWindowIcon(QIcon("/usr/share/pixmaps/snigdhaos-blackbox.svg"));
|
this->setWindowIcon(QIcon("/usr/share/pixmaps/snigdhaos-blackbox.svg"));
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
@@ -23,22 +25,20 @@ SnigdhaOSBlackBox::SnigdhaOSBlackBox(QWidget *parent, QString state)
|
|||||||
executable_modify_date = QFileInfo(QCoreApplication::applicationFilePath()).lastModified();
|
executable_modify_date = QFileInfo(QCoreApplication::applicationFilePath()).lastModified();
|
||||||
updateState(state);
|
updateState(state);
|
||||||
}
|
}
|
||||||
//destructor for Snigdha OS Blackbox class
|
|
||||||
|
|
||||||
SnigdhaOSBlackBox::~SnigdhaOSBlackBox()
|
SnigdhaOSBlackbox::~SnigdhaOSBlackbox()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::doInternetUpRequest(){
|
void SnigdhaOSBlackbox::doInternetUpRequest() {
|
||||||
QNetworkAccessManager* network_manager = new QNetworkAccessManager();
|
QNetworkAccessManager* network_manager = new QNetworkAccessManager(this);
|
||||||
auto network_reply = network_manager->head(QNetworkRequest(QString(INTERNET_CHECK_URL)));
|
QNetworkReply* network_reply = network_manager->head(QNetworkRequest(QString(INTERNET_CHECK_URL)));
|
||||||
|
|
||||||
QTimer* timer = new QTimer(this);
|
QTimer* timer = new QTimer(this);
|
||||||
timer->setSingleShot(true);
|
timer->setSingleShot(true);
|
||||||
timer->start(5000);
|
timer->start(5000); //5 sec
|
||||||
|
|
||||||
//Try again fuction!
|
|
||||||
connect(timer, &QTimer::timeout, this, [this, timer, network_reply, network_manager]() {
|
connect(timer, &QTimer::timeout, this, [this, timer, network_reply, network_manager]() {
|
||||||
timer->deleteLater();
|
timer->deleteLater();
|
||||||
network_reply->abort();
|
network_reply->abort();
|
||||||
@@ -62,20 +62,20 @@ void SnigdhaOSBlackBox::doInternetUpRequest(){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::doUpdate(){
|
void SnigdhaOSBlackbox::doUpdate() {
|
||||||
if (qEnvironmentVariableIsSet("SNIGDHAOS_BLACKBOX_SELFUPDATE")) {
|
if (qEnvironmentVariableIsSet("SNIGDHAOS_BLACKBOX_SELFUPDATE")) {
|
||||||
updateState(State::SELECT);
|
updateState(State::SELECT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto process = new QProcess(this);
|
auto process = new QProcess(this);
|
||||||
QTemporaryFile* file = new QTemporaryFile(this);
|
QTemporaryFile* file = new QTemporaryFile(this);
|
||||||
file->open();
|
file->open();
|
||||||
file->setAutoRemove(true);
|
file->setAutoRemove(true);
|
||||||
process->start("/usr/lib/snigdhaos/launch-terminal", QStringList() << QString("sudo pacman -Syyu 2>&1 && rm \"" + file->fileName() + "\"; read -p 'Press Ebter to Exit'"));
|
process->start("/usr/lib/snigdhaos/launch-terminal", QStringList() << QString("sudo pacman -Syyu 2>&1 && rm \"" + file->fileName() + "\"; read -p 'Press Enter↵ to Exit"));
|
||||||
connect(process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this, process, file](int exitcode, QProcess::ExitStatus status) {
|
connect(process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this, process, file](int exitcode, QProcess::ExitStatus status) {
|
||||||
process->deleteLater();
|
process->deleteLater();
|
||||||
file->deleteLater();
|
file->deleteLater();
|
||||||
|
|
||||||
if (exitcode == 0 && !file->exists()) {
|
if (exitcode == 0 && !file->exists()) {
|
||||||
relaunchSelf("POST_UPDATE");
|
relaunchSelf("POST_UPDATE");
|
||||||
}
|
}
|
||||||
@@ -85,14 +85,13 @@ void SnigdhaOSBlackBox::doUpdate(){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::doApply(){
|
void SnigdhaOSBlackbox::doApply() {
|
||||||
QStringList packages;
|
QStringList packages;
|
||||||
QStringList setup_commands;
|
QStringList setup_commands;
|
||||||
QStringList prepare_commands;
|
QStringList prepare_commands;
|
||||||
|
|
||||||
auto checkboxList = ui->selectWidget_tabs->findChildren<QCheckBox*>();
|
auto checkBoxList = ui->selectWidget_tabs->findChildren<QCheckBox*>();
|
||||||
|
for (auto checkbox : checkBoxList) {
|
||||||
for (auto checkbox : checkboxList){
|
|
||||||
if (checkbox->isChecked()) {
|
if (checkbox->isChecked()) {
|
||||||
packages += checkbox->property("packages").toStringList();
|
packages += checkbox->property("packages").toStringList();
|
||||||
setup_commands += checkbox->property("setup_commands").toStringList();
|
setup_commands += checkbox->property("setup_commands").toStringList();
|
||||||
@@ -100,48 +99,52 @@ void SnigdhaOSBlackBox::doApply(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packages.empty()){
|
if (packages.isEmpty()) {
|
||||||
updateState(State::SUCCESS);
|
updateState(State::SUCCESS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (packages.contains("podman")) {
|
||||||
|
setup_commands += "systemctl enable --now podman.socket";
|
||||||
|
}
|
||||||
if (packages.contains("docker")) {
|
if (packages.contains("docker")) {
|
||||||
setup_commands += "systemctl enable --now docker.socket";
|
setup_commands += "systemctl enable --now docker.socket";
|
||||||
}
|
}
|
||||||
if (packages.contains("virt-manager-meta") && packages.contains("gnome-boxes")){
|
|
||||||
setup_commands += "systemctl enable --now libvirtd";
|
|
||||||
}
|
|
||||||
|
|
||||||
packages.removeDuplicates();
|
packages.removeDuplicates();
|
||||||
|
|
||||||
QTemporaryFile* prepareFile = new QTemporaryFile(this);
|
QTemporaryFile* prepareFile = new QTemporaryFile(this);
|
||||||
prepareFile->setAutoRemove(true);
|
prepareFile->setAutoRemove(true);
|
||||||
prepareFile->open();
|
prepareFile->open();
|
||||||
|
|
||||||
QTextStream prepareStream(prepareFile);
|
QTextStream prepareStream(prepareFile);
|
||||||
prepareStream << prepare_commands.join('\n');
|
prepareStream << prepare_commands.join('\n');
|
||||||
prepareFile->close();
|
prepareFile->close();
|
||||||
QTemporaryFile* packagesFiles = new QTemporaryFile(this);
|
|
||||||
packagesFiles->setAutoRemove(true);
|
QTemporaryFile* packagesFile = new QTemporaryFile(this);
|
||||||
packagesFiles->open();
|
packagesFile->setAutoRemove(true);
|
||||||
QTextStream packagesStream(packagesFiles);
|
packagesFile->open();
|
||||||
|
|
||||||
|
QTextStream packagesStream(packagesFile);
|
||||||
packagesStream << packages.join(' ');
|
packagesStream << packages.join(' ');
|
||||||
packagesFiles->close();
|
packagesFile->close();
|
||||||
|
|
||||||
QTemporaryFile* setupFile = new QTemporaryFile(this);
|
QTemporaryFile* setupFile = new QTemporaryFile(this);
|
||||||
setupFile->setAutoRemove(true);
|
setupFile->setAutoRemove(true);
|
||||||
setupFile->open();
|
setupFile->open();
|
||||||
|
|
||||||
QTextStream setupStream(setupFile);
|
QTextStream setupStream(setupFile);
|
||||||
setupStream << setup_commands.join('\n');
|
setupStream << setup_commands.join('\n');
|
||||||
setupFile->close();
|
setupFile->close();
|
||||||
|
|
||||||
auto process = new QProcess(this);
|
auto process = new QProcess(this);
|
||||||
process->start("/usr/lib/snigdhaos/launch-terminal", QStringList() << QString("/usr/lib/snigdhaos/-blackbox/apply.sh \"") + prepareFile->fileName() + "\" \"" + packagesFiles->fileName() + "\" \"" + setupFile->fileName() + "\"");
|
process->start("/usr/lib/snigdhaos/launch-terminal", QStringList() << QString("/usr/lib/snigdhaos-blackbox/apply.sh \"") + prepareFile->fileName() + "\" \"" + packagesFile->fileName() + "\" \"" + setupFile->fileName() + "\"");
|
||||||
connect(process,QOverload<int,QProcess::ExitStatus>::of(&QProcess::finished), this, [this, process, prepareFile, packagesFiles, setupFile](int exitcode, QProcess::ExitStatus status) {
|
connect(process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, [this, process, prepareFile, packagesFile, setupFile](int exitcode, QProcess::ExitStatus status) {
|
||||||
process->deleteLater();
|
process->deleteLater();
|
||||||
prepareFile->deleteLater();
|
prepareFile->deleteLater();
|
||||||
packagesFiles->deleteLater();
|
packagesFile->deleteLater();
|
||||||
setupFile->deleteLater();
|
setupFile->deleteLater();
|
||||||
|
|
||||||
if (exitcode == 0 && !packagesFiles->exists()){
|
if (exitcode == 0 && !packagesFile->exists()) {
|
||||||
updateState(State::SELECT);
|
updateState(State::SELECT);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -150,13 +153,12 @@ void SnigdhaOSBlackBox::doApply(){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::populateSelectWidget() {
|
void SnigdhaOSBlackbox::populateSelectWidget() {
|
||||||
if (ui->selectWidget_tabs->count() > 1) {
|
if (ui->selectWidget_tabs->count() > 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto desktop = qEnvironmentVariable("XDG_SESSION_DESKTOP");
|
auto desktop = qEnvironmentVariable("XDG_DESKTOP_SESSION");
|
||||||
// I will go for gnome only!
|
|
||||||
ui->checkBox_GNOME->setVisible(desktop == "gnome");
|
ui->checkBox_GNOME->setVisible(desktop == "gnome");
|
||||||
|
|
||||||
bool isDesktop = false;
|
bool isDesktop = false;
|
||||||
@@ -168,21 +170,23 @@ void SnigdhaOSBlackBox::populateSelectWidget() {
|
|||||||
}
|
}
|
||||||
ui->checkBox_Performance->setVisible(isDesktop);
|
ui->checkBox_Performance->setVisible(isDesktop);
|
||||||
|
|
||||||
populateSelectWidget("/usr/lib/snigdhaos-blackbox/webapp.txt", "WebApp");
|
populateSelectWidget("/usr/lib/snigdhaos-blackbox/webapp.txt", "WEBAPP");
|
||||||
populateSelectWidget("/usr/lib/snigdhaos-blackbox/fuzzer.txt", "Fuzzer");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::populateSelectWidget(QString filename, QString label){
|
void SnigdhaOSBlackbox::populateSelectWidget(QString filename, QString label) {
|
||||||
QFile file(filename);
|
QFile file(filename);
|
||||||
|
|
||||||
if (file.open(QIODevice::ReadOnly)) {
|
if (file.open(QIODevice::ReadOnly)) {
|
||||||
QScrollArea* scroll = new QScrollArea(ui->selectWidget_tabs);
|
QScrollArea* scroll = new QScrollArea(ui->selectWidget_tabs);
|
||||||
QWidget* tab = new QWidget(scroll);
|
QWidget* tab = new QWidget(scroll);
|
||||||
QVBoxLayout* layout = new QVBoxLayout(tab);
|
QVBoxLayout* layout = new QVBoxLayout(tab);
|
||||||
QTextStream in(&file);
|
QTextStream in(&file);
|
||||||
|
|
||||||
while (!in.atEnd()) {
|
while (!in.atEnd()) {
|
||||||
QString def = in.readLine();
|
QString def = in.readLine();
|
||||||
QString packages = in.readLine();
|
QString packages = in.readLine();
|
||||||
QString display = in.readLine();
|
QString display = in.readLine();
|
||||||
|
|
||||||
auto checkbox = new QCheckBox(tab);
|
auto checkbox = new QCheckBox(tab);
|
||||||
checkbox->setChecked(def == "true");
|
checkbox->setChecked(def == "true");
|
||||||
checkbox->setText(display);
|
checkbox->setText(display);
|
||||||
@@ -196,7 +200,7 @@ void SnigdhaOSBlackBox::populateSelectWidget(QString filename, QString label){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::updateState(State state){
|
void SnigdhaOSBlackbox::updateState(State state) {
|
||||||
if (currentState != state) {
|
if (currentState != state) {
|
||||||
currentState = state;
|
currentState = state;
|
||||||
this->show();
|
this->show();
|
||||||
@@ -209,40 +213,48 @@ void SnigdhaOSBlackBox::updateState(State state){
|
|||||||
ui->textStackedWidget->setCurrentWidget(ui->textWidget_welcome);
|
ui->textStackedWidget->setCurrentWidget(ui->textWidget_welcome);
|
||||||
ui->textWidget_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
ui->textWidget_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::INTERNET:
|
case State::INTERNET:
|
||||||
ui->mainStackedWidget->setCurrentWidget(ui->waitingWidget);
|
ui->mainStackedWidget->setCurrentWidget(ui->mainStackedWidget);
|
||||||
ui->waitingWidget_text->setText("Waiting For Internet Connection...");
|
ui->waitingWidget_text->setText("Waiting For Internet Connection...");
|
||||||
doInternetUpRequest();
|
doInternetUpRequest();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::UPDATE:
|
case State::UPDATE:
|
||||||
ui->mainStackedWidget->setCurrentWidget(ui->waitingWidget);
|
ui->mainStackedWidget->setCurrentWidget(ui->waitingWidget);
|
||||||
ui->waitingWidget_text->setText("Waiting For Update To Finish...");
|
ui->waitingWidget_text->setText("Please Wait! Till We Finish The Update...");
|
||||||
doUpdate();
|
doUpdate();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::UPDATE_RETRY:
|
case State::UPDATE_RETRY:
|
||||||
ui->mainStackedWidget->setCurrentWidget(ui->textWidget);
|
ui->mainStackedWidget->setCurrentWidget(ui->textWidget);
|
||||||
ui->textStackedWidget->setCurrentWidget(ui->textWidget_updateRetry);
|
ui->textStackedWidget->setCurrentWidget(ui->textWidget_updateRetry);
|
||||||
ui->textWidget_buttonBox->setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No);
|
ui->textWidget_buttonBox->setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::QUIT:
|
case State::QUIT:
|
||||||
ui->mainStackedWidget->setCurrentWidget(ui->textWidget);
|
ui->mainStackedWidget->setCurrentWidget(ui->textWidget);
|
||||||
ui->textStackedWidget->setCurrentWidget(ui->textWidget_quit);
|
ui->textStackedWidget->setCurrentWidget(ui->textWidget_quit);
|
||||||
ui->textWidget_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Reset);
|
ui->textWidget_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Reset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::SELECT:
|
case State::SELECT:
|
||||||
ui->mainStackedWidget->setCurrentWidget(ui->selectWidget);
|
ui->mainStackedWidget->setCurrentWidget(ui->waitingWidget);
|
||||||
populateSelectWidget();
|
populateSelectWidget();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::APPLY:
|
case State::APPLY:
|
||||||
ui->mainStackedWidget->setCurrentWidget(ui->waitingWidget);
|
ui->mainStackedWidget->setCurrentWidget(ui->waitingWidget);
|
||||||
ui->waitingWidget_text->setText("Applying...");
|
ui->waitingWidget_text->setText("We are applying the changes...");
|
||||||
doApply();
|
doApply();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::APPLY_RETRY:
|
case State::APPLY_RETRY:
|
||||||
ui->mainStackedWidget->setCurrentWidget(ui->textWidget);
|
ui->mainStackedWidget->setCurrentWidget(ui->textWidget);
|
||||||
ui->textStackedWidget->setCurrentWidget(ui->textWidget_applyRetry);
|
ui->textStackedWidget->setCurrentWidget(ui->textWidget_applyRetry);
|
||||||
ui->textWidget_buttonBox->setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No);
|
ui->textWidget_buttonBox->setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No | QDialogButtonBox::Reset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::SUCCESS:
|
case State::SUCCESS:
|
||||||
ui->mainStackedWidget->setCurrentWidget(ui->textWidget);
|
ui->mainStackedWidget->setCurrentWidget(ui->textWidget);
|
||||||
ui->textStackedWidget->setCurrentWidget(ui->textWidget_success);
|
ui->textStackedWidget->setCurrentWidget(ui->textWidget_success);
|
||||||
@@ -252,7 +264,7 @@ void SnigdhaOSBlackBox::updateState(State state){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::updateState(QString state) {
|
void SnigdhaOSBlackbox::updateState(QString state) {
|
||||||
if (state == "POST_UPDATE"){
|
if (state == "POST_UPDATE"){
|
||||||
updateState(State::SELECT);
|
updateState(State::SELECT);
|
||||||
}
|
}
|
||||||
@@ -264,10 +276,10 @@ void SnigdhaOSBlackBox::updateState(QString state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::relaunchSelf(QString param) {
|
void SnigdhaOSBlackbox::relaunchSelf(QString param) {
|
||||||
auto binary = QFileInfo(QCoreApplication::applicationFilePath());
|
auto binary = QFileInfo(QCoreApplication::applicationFilePath());
|
||||||
if (executable_modify_date != binary.lastModified()) {
|
if (executable_modify_date != binary.lastModified()) {
|
||||||
execlp(binary.absolutePath().toUtf8().constData(), binary.fileName().toUtf8().constData(), param.toUtf8().constData(), NULL);
|
execlp(binary.absoluteFilePath().toUtf8().constData(), binary.fileName().toUtf8().constData(), param.toUtf8().constData(), NULL);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -275,31 +287,35 @@ void SnigdhaOSBlackBox::relaunchSelf(QString param) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::on_textWidget_buttonBox_clicked(QAbstractButton* button) {
|
void SnigdhaOSBlackbox::on_textWidget_buttonBox_clicked(QAbstractButton* button) {
|
||||||
switch(currentState) {
|
switch(currentState) {
|
||||||
case State::WELCOME:
|
case State::WELCOME:
|
||||||
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
||||||
updateState(State::INTERNET);
|
updateState(State::INTERNET);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::UPDATE_RETRY:
|
case State::UPDATE_RETRY:
|
||||||
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Yes) {
|
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Yes) {
|
||||||
updateState(State::INTERNET);
|
updateState(State::INTERNET);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::APPLY_RETRY:
|
case State::APPLY_RETRY:
|
||||||
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Yes) {
|
||||||
updateState(State::APPLY);
|
updateState(State::APPLY);
|
||||||
}
|
}
|
||||||
else if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Reset) {
|
else if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Reset) {
|
||||||
updateState(State::SELECT);
|
updateState(State::SELECT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::SUCCESS:
|
case State::SUCCESS:
|
||||||
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
||||||
QApplication::quit();
|
QApplication::quit();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case State::QUIT:
|
case State::QUIT:
|
||||||
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::No || ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::No || ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
||||||
QApplication::quit();
|
QApplication::quit();
|
||||||
@@ -307,15 +323,17 @@ void SnigdhaOSBlackBox::on_textWidget_buttonBox_clicked(QAbstractButton* button)
|
|||||||
else {
|
else {
|
||||||
updateState(State::WELCOME);
|
updateState(State::WELCOME);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
default:;
|
default:;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::No || ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Cancel) {
|
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::No || ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Cancel) {
|
||||||
updateState(State::QUIT);
|
updateState(State::QUIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnigdhaOSBlackBox::on_selectWidget_buttonBox_clicked(QAbstractButton* button) {
|
void SnigdhaOSBlackbox::on_selectWidget_buttonBox_Clicked(QAbstractButton* button) {
|
||||||
if (ui->textWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
if (ui->selectWidget_buttonBox->standardButton(button) == QDialogButtonBox::Ok) {
|
||||||
updateState(State::APPLY);
|
updateState(State::APPLY);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@@ -3,15 +3,15 @@
|
|||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QAbstractButton>
|
#include <QAbstractButton>
|
||||||
#include <QNetworkAccessManager>
|
#include <QtNetwork/QNetworkAccessManager>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class SnigdhaOSBlackBox;
|
class SnigdhaOSBlackbox;
|
||||||
}
|
}
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
class SnigdhaOSBlackBox : public QMainWindow
|
class SnigdhaOSBlackbox : public QMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
@@ -27,16 +27,14 @@ public:
|
|||||||
APPLY_RETRY,
|
APPLY_RETRY,
|
||||||
SUCCESS
|
SUCCESS
|
||||||
};
|
};
|
||||||
|
SnigdhaOSBlackbox(QWidget *parent = nullptr, QString state = "WELCOME");
|
||||||
SnigdhaOSBlackBox(QWidget* parent = nullptr, QString state = "WELCOME");
|
~SnigdhaOSBlackbox();
|
||||||
~SnigdhaOSBlackBox();
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_textWidget_buttonBox_clicked(QAbstractButton* button);
|
void on_textWidget_buttonBox_clicked(QAbstractButton* button);
|
||||||
void on_selectWidget_buttonBox_clicked(QAbstractButton* button);
|
void on_selectWidget_buttonBox_Clicked(QAbstractButton* button);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SnigdhaOSBlackBox *ui;
|
Ui::SnigdhaOSBlackbox *ui;
|
||||||
QDateTime executable_modify_date;
|
QDateTime executable_modify_date;
|
||||||
State currentState;
|
State currentState;
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>SnigdhaOSBlackBox</class>
|
<class>SnigdhaOSBlackbox</class>
|
||||||
<widget class="QMainWindow" name="SnigdhaOSBlackBox">
|
<widget class="QMainWindow" name="SnigdhaOSBlackbox">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QStackedWidget" name="mainStackedWidget">
|
<widget class="QStackedWidget" name="mainStackedWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="textWidget">
|
<widget class="QWidget" name="textWidget">
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
Reference in New Issue
Block a user