New low/critical battery splash and dialog

This commit is contained in:
Nicolas Mailloux 2021-04-22 13:56:29 -04:00
parent edb1203d7e
commit 917e28ab52
6 changed files with 98 additions and 180 deletions

View file

@ -47,15 +47,18 @@ alert::alert(QWidget *parent) :
ui->stackedWidget->setCurrentIndex(1); ui->stackedWidget->setCurrentIndex(1);
} }
if(global::battery::showCriticalBatteryAlert == true) { if(global::battery::showCriticalBatteryAlert == true) {
ui->stackedWidget->setVisible(false);
ui->stackedWidget->deleteLater();
QPixmap pixmap(":/resources/battery_alert.png"); QPixmap pixmap(":/resources/battery_alert.png");
QPixmap scaledPixmap = pixmap.scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio); QPixmap scaledPixmap = pixmap.scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio);
ui->alertIconLabel->setPixmap(scaledPixmap); ui->alertIconLabel->setPixmap(scaledPixmap);
global::battery::showCriticalBatteryAlert = false; global::battery::showCriticalBatteryAlert = false;
criticalBattery = true; criticalBattery = true;
ui->securityLabel->setText("Please charge your eReader."); ui->warningLabel->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.\nPlease consider charging it."); ui->securityLabel->setText("The battery's charge level is critical.");
ui->stackedWidget->setVisible(false); ui->messageLabel->setText("To prevent filesystem damage, your device has been turned off.\nPlease consider charging it.");
poweroff(false); poweroff(false);
} }

View file

@ -74,10 +74,10 @@ generalDialog::generalDialog(QWidget *parent) :
lowBatteryDialog = true; lowBatteryDialog = true;
ui->stackedWidget->setCurrentIndex(1); ui->stackedWidget->setCurrentIndex(1);
get_battery_level(); get_battery_level();
QString message = "Warning! Battery is low. Please consider charging your eReader.\nCurrent level: "; QString message = "The battery's level is critical. Please charge your eReader.\nCurrent level: ";
message.append(batt_level); message.append(batt_level);
ui->bodyLabel->setText(message); ui->bodyLabel->setText(message);
ui->headerLabel->setText("Warning"); ui->headerLabel->setText("Low battery");
this->adjustSize(); this->adjustSize();
string_writeconfig("/inkbox/lowBatteryDialog", "false"); string_writeconfig("/inkbox/lowBatteryDialog", "false");
} }

View file

@ -35,7 +35,7 @@ int main(int argc, char *argv[])
; ;
} }
else { else {
string_writeconfig("/inkbox/batteryCritical", "true"); global::battery::showCriticalBatteryAlert = true;
QApplication a(argc, argv); QApplication a(argc, argv);
alert w; alert w;

View file

@ -8,6 +8,7 @@
#include <QTime> #include <QTime>
#include <QDateTime> #include <QDateTime>
#include <QTimer> #include <QTimer>
#include <QDebug>
#include <QMessageBox> #include <QMessageBox>
#include <QString> #include <QString>
#include <QFile> #include <QFile>
@ -427,7 +428,13 @@ MainWindow::MainWindow(QWidget *parent)
// Checking if battery level is low // Checking if battery level is low
if(isBatteryLow() == true) { if(isBatteryLow() == true) {
qDebug() << "Warning! Battery is low!"; qDebug() << "Warning! Battery is low!";
QTimer::singleShot(2000, this, SLOT(openLowBatteryDialog())); string_checkconfig_ro("/sys/devices/platform/pmic_battery.1/power_supply/mc13892_bat/status");
if(checkconfig_str_val == "Charging\n") {
;
}
else {
QTimer::singleShot(2000, this, SLOT(openLowBatteryDialog()));
}
} }
// Check if it's the first boot since an update and confirm that it installed successfully // Check if it's the first boot since an update and confirm that it installed successfully

View file

@ -13,6 +13,7 @@
#include <QDesktopWidget> #include <QDesktopWidget>
#include <QScreen> #include <QScreen>
#include <QFontDatabase> #include <QFontDatabase>
#include <QDirIterator>
using namespace std; using namespace std;
@ -581,6 +582,79 @@ int reader::setup_book(QString book, int i, bool run_parser) {
return 0; return 0;
} }
void reader::checkwords() {
QFile words_list(".config/06-words/config");
words_list.open(QIODevice::ReadWrite);
QTextStream in (&words_list);
words = in.readAll();
words_list.close();
}
bool reader::epub_file_match(QString file) {
QString fileExt = file.right(4);
if(fileExt == "epub" or fileExt == "EPUB") {
return true;
}
else {
return false;
}
}
void reader::dictionary_lookup(string word, QString first_letter, int position) {
ofstream fhandler;
fhandler.open("/inkbox/dictionary/word");
fhandler << word;
fhandler.close();
QDir::setCurrent("dictionary");
QDir::setCurrent(first_letter);
QString lookup_prog ("sh");
QStringList lookup_args;
QString position_str = QString::number(position);
lookup_args << "../scripts/lookup.sh" << position_str;
QProcess *lookup_proc = new QProcess();
lookup_proc->start(lookup_prog, lookup_args);
lookup_proc->waitForFinished();
QFile definition_file("/inkbox/dictionary/definition");
definition_file.open(QIODevice::ReadWrite);
QTextStream in (&definition_file);
definition = in.readAll();
definition = definition.remove(QRegExp("[\n]"));
if(definition == "No definition found.") {
nextdefinition_lock = true;
}
else {
nextdefinition_lock = false;
}
definition_file.close();
QDir::setCurrent("/mnt/onboard/.adds/inkbox");
}
void reader::save_word(string word, bool remove) {
if(remove == false) {
QFile words(".config/06-words/config");
words.open(QIODevice::ReadWrite);
QTextStream in (&words);
QString words_list = in.readAll();
string words_list_str = words_list.toStdString();
words.close();
ofstream fhandler;
fhandler.open(".config/06-words/config");
fhandler << words_list_str << word << "\n";
fhandler.close();
}
else {
ofstream fhandler;
fhandler.open(".config/06-words/config");
fhandler << word;
fhandler.close();
}
}
void reader::on_nextBtn_clicked() void reader::on_nextBtn_clicked()
{ {
if(split_total - 1 == 1 or split_total - 1 == 0) { if(split_total - 1 == 1 or split_total - 1 == 0) {

180
reader.h
View file

@ -6,12 +6,6 @@
#include "generaldialog.h" #include "generaldialog.h"
#include <QWidget> #include <QWidget>
#include <QProcess>
#include <QDebug>
#include <QFile>
#include <QDir>
#include <QDirIterator>
#include <QList>
using namespace std; using namespace std;
@ -24,6 +18,9 @@ class reader : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit reader(QWidget *parent = nullptr);
~reader();
int split_total; int split_total;
int split_files_number; int split_files_number;
int page_number; int page_number;
@ -61,174 +58,11 @@ public:
QPixmap scaledFullPixmap; QPixmap scaledFullPixmap;
QPixmap scaledEmptyPixmap; QPixmap scaledEmptyPixmap;
QList<QString> content; QList<QString> content;
explicit reader(QWidget *parent = nullptr);
~reader();
int setup_book(QString book, int i, bool run_parser); int setup_book(QString book, int i, bool run_parser);
/*int setup_book(QString book, int i, bool run_parser) { void checkwords();
// Parse ebook bool epub_file_match(QString file);
if(remount != false) { void dictionary_lookup(string word, QString first_letter, int position);
QString mount_prog ("sh"); void save_word(string word, bool remove);
QStringList mount_args;
mount_args << "split.sh";
QProcess *mount_proc = new QProcess();
mount_proc->start(mount_prog, mount_args);
mount_proc->waitForFinished();
remount = false;
}
else {
string_writeconfig("/inkbox/remount", "false");
QString mount_prog ("sh");
QStringList mount_args;
mount_args << "split.sh";
QProcess *mount_proc = new QProcess();
mount_proc->start(mount_prog, mount_args);
mount_proc->waitForFinished();
}
if(booktostr_ran != true) {
if(epub_file_match(book) == true) {
// Parsing ePUBs with epub2txt, thanks to GitHub:kevinboone
QString epubProg ("sh");
QStringList epubArgs;
epubArgs << "/mnt/onboard/.adds/inkbox/epub.sh" << book;
QProcess *epubProc = new QProcess();
epubProc->start(epubProg, epubArgs);
epubProc->waitForFinished();
is_epub = true;
booktostr_ran = true;
}
else {
// This is likely not an ePUB.
// Copying book specified in the function call
QFile::copy(book, "/inkbox/book/book.txt");
is_epub = false;
booktostr_ran = true;
}
}
// Checking if the user has defined an option for the number of words per page; if not, then setting the default.
QDir::setCurrent("/mnt/onboard/.adds/inkbox");
string_checkconfig(".config/07-words_number/config");
if(checkconfig_str_val == "") {
string_writeconfig(".config/07-words_number/config", "100");
string_checkconfig(".config/07-words_number/config");
}
// Parsing file
if(parser_ran != true) {
if(is_epub == true) {
QString parse_prog ("python3");
QStringList parse_args;
parse_args << "split.py" << checkconfig_str_val;
QProcess *parse_proc = new QProcess();
parse_proc->start(parse_prog, parse_args);
parse_proc->waitForFinished();
parser_ran = true;
}
else {
QString parse_prog ("python3");
QStringList parse_args;
parse_args << "split-txt.py" << checkconfig_str_val;
QProcess *parse_proc = new QProcess();
parse_proc->start(parse_prog, parse_args);
parse_proc->waitForFinished();
parser_ran = true;
}
}
// Changing current working directory
QDir::setCurrent("/inkbox/book");
// Reading file
if(run_parser == true) {
QDirIterator it("/inkbox/book/split");
while (it.hasNext()) {
QFile f(it.next());
f.open(QIODevice::ReadOnly);
content << f.readAll();
f.close();
}
return content.size();
QDir::setCurrent("/mnt/onboard/.adds/inkbox");
}
else {
ittext = content[i];
QDir::setCurrent("/mnt/onboard/.adds/inkbox");
}
return 0;
}*/
void checkwords() {
QFile words_list(".config/06-words/config");
words_list.open(QIODevice::ReadWrite);
QTextStream in (&words_list);
words = in.readAll();
words_list.close();
}
bool epub_file_match(QString file) {
QString fileExt = file.right(4);
if(fileExt == "epub" or fileExt == "EPUB") {
return true;
}
else {
return false;
}
};
void dictionary_lookup(string word, QString first_letter, int position) {
ofstream fhandler;
fhandler.open("/inkbox/dictionary/word");
fhandler << word;
fhandler.close();
QDir::setCurrent("dictionary");
QDir::setCurrent(first_letter);
QString lookup_prog ("sh");
QStringList lookup_args;
QString position_str = QString::number(position);
lookup_args << "../scripts/lookup.sh" << position_str;
QProcess *lookup_proc = new QProcess();
lookup_proc->start(lookup_prog, lookup_args);
lookup_proc->waitForFinished();
QFile definition_file("/inkbox/dictionary/definition");
definition_file.open(QIODevice::ReadWrite);
QTextStream in (&definition_file);
definition = in.readAll();
definition = definition.remove(QRegExp("[\n]"));
if(definition == "No definition found.") {
nextdefinition_lock = true;
}
else {
nextdefinition_lock = false;
}
definition_file.close();
QDir::setCurrent("/mnt/onboard/.adds/inkbox");
}
void save_word(string word, bool remove) {
if(remove == false) {
QFile words(".config/06-words/config");
words.open(QIODevice::ReadWrite);
QTextStream in (&words);
QString words_list = in.readAll();
string words_list_str = words_list.toStdString();
words.close();
ofstream fhandler;
fhandler.open(".config/06-words/config");
fhandler << words_list_str << word << "\n";
fhandler.close();
}
else {
ofstream fhandler;
fhandler.open(".config/06-words/config");
fhandler << word;
fhandler.close();
}
}
void menubar_show(); void menubar_show();
void menubar_hide(); void menubar_hide();
void wordwidget_show(); void wordwidget_show();