1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-23 21:55:08 +00:00
serenity/Applications/SystemDialog/main.cpp
Andreas Kling f98b1f635b SystemDialog: Add a new app for showing system dialogs.
Currently this will be used by the WindowServer to show some dialogs.
This is needed since WindowServer can't use LibGUI and reimplementing
message box functionality inside WindowServer would be silly. :^)

The only dialog supported in this initial version is --shutdown
2019-07-16 21:41:13 +02:00

49 lines
1.2 KiB
C++

#include <LibGUI/GApplication.h>
#include <LibGUI/GBoxLayout.h>
#include <LibGUI/GButton.h>
#include <LibGUI/GDesktop.h>
#include <LibGUI/GLabel.h>
#include <LibGUI/GMessageBox.h>
#include <LibGUI/GWindow.h>
#include <stdio.h>
#include <sys/utsname.h>
static int run_shutdown_dialog(int argc, char** argv);
int main(int argc, char** argv)
{
if (argc != 2) {
printf("usage: SystemDialog <type>\n");
return 0;
}
if (String(argv[1]) == "--shutdown")
return run_shutdown_dialog(argc, argv);
fprintf(stderr, "Unknown argument: %s\n", argv[1]);
return 1;
}
int run_shutdown_dialog(int argc, char** argv)
{
GApplication app(argc, argv);
{
GMessageBox box("Shut down Serenity?", "Confirm Shutdown", GMessageBox::Type::Warning, GMessageBox::InputType::OkCancel);
auto result = box.exec();
if (result == GMessageBox::ExecOK) {
dbg() << "OK";
int rc = execl("/bin/shutdown", "/bin/shutdown", "-n", nullptr);
if (rc < 0) {
perror("execl");
return 1;
}
} else {
dbg() << "Cancel";
return 0;
}
}
return app.exec();
}