summaryrefslogtreecommitdiff
path: root/raveos-calamares/0003-restart-button.patch
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-calamares/0003-restart-button.patch')
-rw-r--r--raveos-calamares/0003-restart-button.patch115
1 files changed, 115 insertions, 0 deletions
diff --git a/raveos-calamares/0003-restart-button.patch b/raveos-calamares/0003-restart-button.patch
new file mode 100644
index 0000000..0d8e0f4
--- /dev/null
+++ b/raveos-calamares/0003-restart-button.patch
@@ -0,0 +1,115 @@
+--- a/src/calamares/CalamaresWindow.cpp
++++ b/src/calamares/CalamaresWindow.cpp
+@@ -24,6 +24,7 @@
+ #include "utils/Logger.h"
+ #include "utils/Qml.h"
+ #include "utils/Retranslator.h"
++#include "viewpages/ExecutionViewStep.h"
+ #include "viewpages/ViewStep.h"
+
+ #include <QApplication>
+@@ -34,7 +35,10 @@
+ #endif
+ #include <QFile>
+ #include <QFileInfo>
++#include <QDialog>
+ #include <QLabel>
++#include <QProcess>
++#include <QPushButton>
+ #ifdef WITH_QML
+ #include <QQmlContext>
+ #include <QQmlEngine>
+@@ -207,6 +211,38 @@
+ return sideBox;
+ }
+
++/** @brief RaveOS: localized confirm dialog for the global restart button. */
++static bool
++raveosConfirmRestart( QWidget* parent )
++{
++ QDialog dialog( parent );
++ dialog.setObjectName( QStringLiteral( "raveosDialog" ) );
++ dialog.setWindowTitle( QStringLiteral( "RaveOS" ) );
++ dialog.setMinimumWidth( 420 );
++
++ auto* layout = new QVBoxLayout( &dialog );
++ auto* label = new QLabel( QCoreApplication::translate( "raveos", "Restart the computer?" ), &dialog );
++ label->setObjectName( QStringLiteral( "raveosDialogLabel" ) );
++ label->setWordWrap( true );
++ layout->addWidget( label );
++ layout->addSpacing( 10 );
++
++ auto* buttons = new QHBoxLayout;
++ buttons->addStretch();
++ auto* cancel = new QPushButton( QCoreApplication::translate( "raveos", "Cancel" ), &dialog );
++ cancel->setObjectName( QStringLiteral( "raveosDialogCancel" ) );
++ auto* ok = new QPushButton( QCoreApplication::translate( "raveos", "Restart" ), &dialog );
++ ok->setObjectName( QStringLiteral( "raveosDialogOk" ) );
++ buttons->addWidget( cancel );
++ buttons->addWidget( ok );
++ layout->addLayout( buttons );
++
++ QObject::connect( cancel, &QPushButton::clicked, &dialog, &QDialog::reject );
++ QObject::connect( ok, &QPushButton::clicked, &dialog, &QDialog::accept );
++
++ return dialog.exec() == QDialog::Accepted;
++}
++
+ static QWidget*
+ getWidgetNavigation( Calamares::DebugWindowManager*,
+ Calamares::ViewManager* viewManager,
+@@ -216,6 +252,45 @@
+ {
+ QWidget* navigation = new QWidget( parent );
+ QBoxLayout* bottomLayout = new QHBoxLayout;
++
++ // RaveOS: globalis ujrainditas gomb a bal also sarokban.
++ // Telepites kozben (exec) es a finish oldalon NEM latszik.
++ {
++ auto* restart = new QPushButton( navigation );
++ restart->setObjectName( "restartButton" );
++ restart->setIcon( getButtonIcon( QStringLiteral( "view-refresh" ) ) );
++ CALAMARES_RETRANSLATE_FOR(
++ restart,
++ restart->setText( QCoreApplication::translate( CalamaresWindow::staticMetaObject.className(),
++ "&Restart",
++ "@button" ) );
++ restart->setToolTip( QCoreApplication::translate( CalamaresWindow::staticMetaObject.className(),
++ "Restart the computer",
++ "@tooltip" ) ); );
++ QObject::connect( restart,
++ &QPushButton::clicked,
++ restart,
++ [restart]()
++ {
++ if ( raveosConfirmRestart( restart ) )
++ {
++ QProcess::startDetached( QStringLiteral( "systemctl" ),
++ { QStringLiteral( "-i" ), QStringLiteral( "reboot" ) } );
++ }
++ } );
++ bottomLayout->addWidget( restart );
++
++ auto updateVisibility = [restart, viewManager]()
++ {
++ auto* step = viewManager->currentStep();
++ const bool inExec = qobject_cast< Calamares::ExecutionViewStep* >( step ) != nullptr;
++ const bool onFinish = step && step->isAtEnd() && !step->isNextEnabled();
++ restart->setVisible( !inExec && !onFinish );
++ };
++ QObject::connect( viewManager, &Calamares::ViewManager::currentStepChanged, restart, updateVisibility );
++ updateVisibility();
++ }
++
+ bottomLayout->addStretch();
+
+ // Create buttons and sets an initial icon; the icons may change
+@@ -272,7 +347,7 @@
+ bottomLayout->addWidget( quit );
+ }
+
+- bottomLayout->setContentsMargins( 0, 0, 6, 6 );
++ bottomLayout->setContentsMargins( 6, 0, 6, 6 );
+ navigation->setLayout( bottomLayout );
+ return navigation;
+ }