2021-03-25 05:00:19 -07:00
# include "alert.h"
# include "ui_alert.h"
2021-04-05 06:50:58 -07:00
# include "functions.h"
2021-03-25 05:00:19 -07:00
# include <QPixmap>
# include <QScreen>
# include <QFile>
# include <QProcess>
alert : : alert ( QWidget * parent ) :
QWidget ( parent ) ,
ui ( new Ui : : alert )
{
ui - > setupUi ( this ) ;
// Getting the screen's size
float sW = QGuiApplication : : screens ( ) [ 0 ] - > size ( ) . width ( ) ;
float sH = QGuiApplication : : screens ( ) [ 0 ] - > size ( ) . height ( ) ;
// Defining what the "Alert" icon size will be
float stdIconWidth = sW / 1.7 ;
float stdIconHeight = sH / 1.7 ;
// General stylesheet
QFile stylesheetFile ( " :/resources/eink_dark.qss " ) ;
stylesheetFile . open ( QFile : : ReadOnly ) ;
this - > setStyleSheet ( stylesheetFile . readAll ( ) ) ;
stylesheetFile . close ( ) ;
2021-04-06 13:08:03 -07:00
// Checking if the update's signature is untrusted. The signature error will always take precedence over the downgrade one (c.f. update.sh script)
2021-04-02 10:42:00 -07:00
if ( checkconfig ( " /external_root/boot/flags/ALERT_SIGN " ) = = true ) {
2021-04-22 07:10:47 -07:00
QPixmap pixmap ( " :/resources/alert.png " ) ;
QPixmap scaledPixmap = pixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
ui - > alertIconLabel - > setPixmap ( scaledPixmap ) ;
2021-04-06 13:08:03 -07:00
signatureError = true ;
2021-04-02 18:38:52 -07:00
ui - > securityLabel - > setText ( " Failed to update InkBox. " ) ;
2021-04-02 19:56:19 -07:00
ui - > messageLabel - > setText ( " The digital signature of the update is untrusted. \n For security reasons, it cannot be installed. " ) ;
2021-04-02 10:42:00 -07:00
ui - > stackedWidget - > setCurrentIndex ( 1 ) ;
}
2021-04-06 13:08:03 -07:00
if ( checkconfig ( " /external_root/boot/flags/ALERT_DOWNGRADE " ) = = true ) {
2021-04-22 07:10:47 -07:00
QPixmap pixmap ( " :/resources/alert.png " ) ;
QPixmap scaledPixmap = pixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
ui - > alertIconLabel - > setPixmap ( scaledPixmap ) ;
2021-04-06 13:08:03 -07:00
downgradeError = true ;
ui - > securityLabel - > setText ( " Failed to update InkBox. " ) ;
2021-04-06 18:29:33 -07:00
ui - > messageLabel - > setText ( " An error occured during the update process. \n The update package's version is lower than the actual installed version. " ) ;
2021-04-06 13:08:03 -07:00
ui - > stackedWidget - > setCurrentIndex ( 1 ) ;
}
2021-04-22 07:10:47 -07:00
if ( global : : battery : : showCriticalBatteryAlert = = true ) {
QPixmap pixmap ( " :/resources/battery_alert.png " ) ;
QPixmap scaledPixmap = pixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
ui - > alertIconLabel - > setPixmap ( scaledPixmap ) ;
global : : battery : : showCriticalBatteryAlert = false ;
2021-04-22 04:38:54 -07:00
criticalBattery = true ;
ui - > securityLabel - > setText ( " Please charge your eReader. " ) ;
ui - > messageLabel - > setText ( " The battery level is very low. To prevent damage to the filesystem, your device has been turned off. \n Please consider charging it. " ) ;
ui - > stackedWidget - > setVisible ( false ) ;
poweroff ( false ) ;
}
2021-04-02 10:42:00 -07:00
2021-03-25 05:00:19 -07:00
ui - > warningLabel - > setStyleSheet ( " QLabel { background-color : black; color : white; font-size: 16pt} " ) ;
ui - > messageLabel - > setStyleSheet ( " QLabel { background-color : black; color : white; font-size: 9pt} " ) ;
ui - > securityLabel - > setStyleSheet ( " QLabel { background-color : black; color : white; font-size: 11pt} " ) ;
ui - > continueBtn - > setProperty ( " type " , " borderless " ) ;
ui - > resetBtn - > setProperty ( " type " , " borderless " ) ;
ui - > continueBtn - > setStyleSheet ( " padding: 20px " ) ;
ui - > resetBtn - > setStyleSheet ( " padding: 20px " ) ;
2021-04-02 10:42:00 -07:00
ui - > continue2Btn - > setProperty ( " type " , " borderless " ) ;
ui - > continue2Btn - > setStyleSheet ( " padding: 20px " ) ;
2021-03-25 05:00:19 -07:00
}
alert : : ~ alert ( )
{
delete ui ;
}
void alert : : on_continueBtn_clicked ( )
{
// We continue anyway and re-set the ALERT flag
string_writeconfig ( " /external_root/boot/flags/ALERT " , " false " ) ;
2021-04-02 10:42:00 -07:00
string_writeconfig ( " /external_root/boot/flags/ALERT_SIGN " , " false " ) ;
2021-03-25 05:00:19 -07:00
QProcess process ;
process . startDetached ( " inkbox " , QStringList ( ) ) ;
qApp - > quit ( ) ;
}
void alert : : on_resetBtn_clicked ( )
{
// We set the DO_FACTORY_RESET flag and we restart the Kobo
string_writeconfig ( " /external_root/boot/flags/DO_FACTORY_RESET " , " true " ) ;
string_writeconfig ( " /external_root/boot/flags/DIAGS_BOOT " , " true " ) ;
QString reboot_prog ( " busybox " ) ;
QStringList reboot_args ;
reboot_args < < " reboot " ;
QProcess * reboot_proc = new QProcess ( ) ;
reboot_proc - > start ( reboot_prog , reboot_args ) ;
reboot_proc - > waitForFinished ( ) ;
}
2021-04-02 10:42:00 -07:00
void alert : : on_continue2Btn_clicked ( )
{
// We continue anyway and re-set the ALERT flag
string_writeconfig ( " /external_root/boot/flags/ALERT " , " false " ) ;
2021-04-06 13:08:03 -07:00
if ( signatureError = = true ) {
string_writeconfig ( " /external_root/boot/flags/ALERT_SIGN " , " false " ) ;
QProcess process ;
process . startDetached ( " inkbox " , QStringList ( ) ) ;
qApp - > quit ( ) ;
}
if ( downgradeError = = true ) {
string_writeconfig ( " /external_root/boot/flags/ALERT_DOWNGRADE " , " false " ) ;
QProcess process ;
process . startDetached ( " inkbox " , QStringList ( ) ) ;
qApp - > quit ( ) ;
}
2021-04-02 10:42:00 -07:00
}