diff options
Diffstat (limited to 'raveos-calamares')
| -rw-r--r-- | raveos-calamares/0003-restart-button.patch | 115 | ||||
| -rw-r--r-- | raveos-calamares/PKGBUILD | 7 |
2 files changed, 120 insertions, 2 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; + } diff --git a/raveos-calamares/PKGBUILD b/raveos-calamares/PKGBUILD index 05885d7..2157aa6 100644 --- a/raveos-calamares/PKGBUILD +++ b/raveos-calamares/PKGBUILD @@ -4,7 +4,7 @@ _pkgname="calamares" pkgname="$_pkgname" pkgver=3.4.2 -pkgrel=9 +pkgrel=14 pkgdesc="Distribution-independent installer framework" url="https://codeberg.org/Calamares/calamares" license=("GPL-3.0-or-later") @@ -31,15 +31,18 @@ _pkgsrc="$_pkgname" _pkgext="tar.gz" source=("$_pkgname-$pkgver.$_pkgext"::"$url/releases/download/v$pkgver/$_pkgname-$pkgver.$_pkgext" "0001-support-yay.patch" - "0002-limit-translations.patch") + "0002-limit-translations.patch" + "0003-restart-button.patch") sha256sums=('733bbbb00dc9f84874bd5c22960952f317ea2537565431179fa2152b2fbfdccc' 'SKIP' + 'SKIP' 'SKIP') prepare() { cd $srcdir/$_pkgname-$pkgver patch -Np1 -i ../0001-support-yay.patch patch -Np1 -i ../0002-limit-translations.patch + patch -Np1 -i ../0003-restart-button.patch # Copy across the custom images cp -a ${startdir}/images/partition-alongside.svg $srcdir/$_pkgname-$pkgver/data/images/partition-alongside.svg |