mirror of
https://github.com/Quill-OS/quill.git
synced 2024-10-31 21:33:22 -07:00
763279f1f1
Huge thanks to @Szybet for writing at least 95% of the code in this commit
1099 lines
36 KiB
C++
1099 lines
36 KiB
C++
#include "settings.h"
|
|
#include "ui_settings.h"
|
|
#include "mainwindow.h"
|
|
#include "ui_mainwindow.h"
|
|
#include "functions.h"
|
|
#include <QFile>
|
|
#include <QMessageBox>
|
|
#include <QSettings>
|
|
#include <QWidget>
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <streambuf>
|
|
#include <string>
|
|
#include <QProcess>
|
|
#include <QTimer>
|
|
#include <QIcon>
|
|
#include <QScreen>
|
|
|
|
using namespace std;
|
|
|
|
settings::settings(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::settings)
|
|
{
|
|
ui->setupUi(this);
|
|
settings::setFont(QFont("u001"));
|
|
ui->comboBox->setFont(QFont("u001"));
|
|
ui->tzComboBox->setFont(QFont("u001"));
|
|
ui->sleepTimeoutComboBox->setFont(QFont("u001"));
|
|
ui->uiScaleNumberLabel->setFont(QFont("Inter"));
|
|
ui->aboutBtn->setFont(QFont("u001"));
|
|
ui->okBtn->setFont(QFont("Inter"));
|
|
|
|
ui->setPasscodeBtn->setProperty("type", "borderless");
|
|
ui->okBtn->setProperty("type", "borderless");
|
|
ui->aboutBtn->setProperty("type", "borderless");
|
|
ui->requestLeaseBtn->setProperty("type", "borderless");
|
|
ui->usbmsBtn->setProperty("type", "borderless");
|
|
ui->updateBtn->setProperty("type", "borderless");
|
|
ui->resetBtn->setProperty("type", "borderless");
|
|
ui->showSystemInfoBtn->setProperty("type", "borderless");
|
|
ui->generateSystemReportBtn->setProperty("type", "borderless");
|
|
ui->checkOtaUpdateBtn->setProperty("type", "borderless");
|
|
ui->previousBtn->setProperty("type", "borderless");
|
|
ui->nextBtn->setProperty("type", "borderless");
|
|
ui->repackBtn->setProperty("type", "borderless");
|
|
ui->label->setStyleSheet("font-size: 10.5pt; font-weight: bold");
|
|
ui->okBtn->setStyleSheet("font-weight: bold");
|
|
ui->aboutBtn->setStyleSheet("font-size: 9pt");
|
|
ui->requestLeaseBtn->setStyleSheet("font-size: 9pt");
|
|
ui->usbmsBtn->setStyleSheet("font-size: 9pt");
|
|
ui->updateBtn->setStyleSheet("font-size: 9pt");
|
|
ui->resetBtn->setStyleSheet("font-size: 9pt");
|
|
ui->showSystemInfoBtn->setStyleSheet("font-size: 9pt");
|
|
ui->generateSystemReportBtn->setStyleSheet("font-size: 9pt");
|
|
ui->checkOtaUpdateBtn->setStyleSheet("font-size: 9pt");
|
|
ui->comboBox->setStyleSheet("font-size: 9pt");
|
|
ui->tzComboBox->setStyleSheet("font-size: 9pt");
|
|
ui->sleepTimeoutComboBox->setStyleSheet("font-size: 9pt");
|
|
ui->setPasscodeBtn->setStyleSheet("font-size: 9pt");
|
|
ui->repackBtn->setStyleSheet("font-size: 9pt");
|
|
ui->uiScaleNumberLabel->setStyleSheet("font-size: 9pt; font-weight: bold");
|
|
|
|
ui->previousBtn->setText("");
|
|
ui->previousBtn->setIcon(QIcon(":/resources/chevron-left.png"));
|
|
ui->nextBtn->setText("");
|
|
ui->nextBtn->setIcon(QIcon(":/resources/chevron-right.png"));
|
|
|
|
ui->requestLeaseBtn->hide();
|
|
ui->usbmsBtn->hide();
|
|
ui->label_3->hide();
|
|
ui->label_4->hide();
|
|
ui->label_5->hide();
|
|
ui->label_6->hide();
|
|
ui->line_3->hide();
|
|
ui->line_7->hide();
|
|
ui->updateBtn->hide();
|
|
ui->updateLabel->hide();
|
|
ui->enableLockscreenCheckBox->hide();
|
|
ui->setPasscodeBtn->hide();
|
|
ui->setPasscodeLabel->hide();
|
|
ui->securityLabel->hide();
|
|
ui->line_2->hide();
|
|
ui->uiScaleNumberLabel->hide();
|
|
ui->uiScalingSlider->hide();
|
|
ui->uiScalingLabel->hide();
|
|
|
|
// Variables
|
|
defineDefaultPageSize(0);
|
|
defineDefaultPageSize(1);
|
|
|
|
// Settings tweaking + enabling specific features whether it's running on the provided integrated OS or Kobo firmware
|
|
if(checkconfig(".config/01-demo/config") == true) {
|
|
ui->demoCheckBox->click();
|
|
}
|
|
if(checkconfig(".config/02-clock/config") == true) {
|
|
ui->clockCheckBox->click();
|
|
}
|
|
if(checkconfig(".config/05-quote/config") == true) {
|
|
ui->quoteCheckBox->click();
|
|
}
|
|
|
|
if(global::deviceID == "n705\n" or global::deviceID == "n905\n" or global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n437\n" or global::deviceID == "n306\n") {
|
|
if(checkconfig(".config/10-dark_mode/config") == true) {
|
|
ui->darkModeCheckBox->click();
|
|
}
|
|
}
|
|
else {
|
|
ui->darkModeCheckBox->hide();
|
|
ui->darkModeCheckBox->deleteLater();
|
|
}
|
|
|
|
// Words number
|
|
string_checkconfig(".config/07-words_number/config");
|
|
if(checkconfig_str_val == "") {
|
|
;
|
|
}
|
|
else {
|
|
int words_number = checkconfig_str_val.toInt();
|
|
ui->wordsNumber->setValue(words_number);
|
|
}
|
|
|
|
// ePUB page size
|
|
if(checkconfig(".config/13-epub_page_size/set") == true) {
|
|
string_checkconfig_ro(".config/13-epub_page_size/width");
|
|
if(checkconfig_str_val != "") {
|
|
int pageWidth = checkconfig_str_val.toInt();
|
|
ui->pageSizeWidthSpinBox->setValue(pageWidth);
|
|
}
|
|
else {
|
|
// Failsafe: setting default
|
|
ui->pageSizeWidthSpinBox->setValue(defaultEpubPageWidth);
|
|
}
|
|
string_checkconfig_ro(".config/13-epub_page_size/height");
|
|
if(checkconfig_str_val != "") {
|
|
int pageHeight = checkconfig_str_val.toInt();
|
|
ui->pageSizeHeightSpinBox->setValue(pageHeight);
|
|
}
|
|
else {
|
|
// Failsafe: setting default
|
|
ui->pageSizeHeightSpinBox->setValue(defaultEpubPageHeight);
|
|
}
|
|
}
|
|
else {
|
|
ui->pageSizeWidthSpinBox->setValue(defaultEpubPageWidth);
|
|
ui->pageSizeHeightSpinBox->setValue(defaultEpubPageHeight);
|
|
}
|
|
|
|
// QTextEdit scroll bar in Reader framework
|
|
if(checkconfig(".config/14-reader_scrollbar/config") == true) {
|
|
ui->readerScrollBarCheckBox->click();
|
|
}
|
|
|
|
// Sticky menubar
|
|
if(checkconfig(".config/11-menubar/sticky") == true) {
|
|
ui->menuBarCheckBox->click();
|
|
}
|
|
|
|
// Scaling
|
|
string_checkconfig(".config/09-dpi/config");
|
|
if(checkconfig_str_val == "") {
|
|
;
|
|
}
|
|
else {
|
|
int dpi_number = checkconfig_str_val.toInt();
|
|
// Checking if it's a Mini, Touch or a Glo
|
|
if(global::deviceID == "n705\n") {
|
|
if(dpi_number == 187) {
|
|
ui->uiScalingSlider->setValue(0);
|
|
}
|
|
if(dpi_number == 214) {
|
|
ui->uiScalingSlider->setValue(1);
|
|
}
|
|
if(dpi_number == 227) {
|
|
ui->uiScalingSlider->setValue(2);
|
|
}
|
|
}
|
|
else if(global::deviceID == "n905\n" or global::deviceID == "kt\n") {
|
|
if(dpi_number == 160) {
|
|
ui->uiScalingSlider->setValue(0);
|
|
}
|
|
if(dpi_number == 187) {
|
|
ui->uiScalingSlider->setValue(1);
|
|
}
|
|
if(dpi_number == 200) {
|
|
ui->uiScalingSlider->setValue(2);
|
|
}
|
|
}
|
|
else if(global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n306\n") {
|
|
if(dpi_number == 195) {
|
|
ui->uiScalingSlider->setValue(0);
|
|
}
|
|
if(dpi_number == 210) {
|
|
ui->uiScalingSlider->setValue(1);
|
|
}
|
|
if(dpi_number == 225) {
|
|
ui->uiScalingSlider->setValue(2);
|
|
}
|
|
}
|
|
else if(global::deviceID == "n437\n") {
|
|
if(dpi_number == 275) {
|
|
ui->uiScalingSlider->setValue(0);
|
|
}
|
|
if(dpi_number == 290) {
|
|
ui->uiScalingSlider->setValue(1);
|
|
}
|
|
if(dpi_number == 305) {
|
|
ui->uiScalingSlider->setValue(2);
|
|
}
|
|
}
|
|
else if(global::deviceID == "n873\n") {
|
|
if(dpi_number == 285) {
|
|
ui->uiScalingSlider->setValue(0);
|
|
}
|
|
if(dpi_number == 300) {
|
|
ui->uiScalingSlider->setValue(1);
|
|
}
|
|
if(dpi_number == 315) {
|
|
ui->uiScalingSlider->setValue(2);
|
|
}
|
|
}
|
|
else {
|
|
if(dpi_number == 187) {
|
|
ui->uiScalingSlider->setValue(0);
|
|
}
|
|
if(dpi_number == 214) {
|
|
ui->uiScalingSlider->setValue(1);
|
|
}
|
|
if(dpi_number == 227) {
|
|
ui->uiScalingSlider->setValue(2);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Refresh
|
|
string_checkconfig_ro(".config/04-book/refresh");
|
|
if(checkconfig_str_val == "") {
|
|
// Set default option, 3
|
|
string_writeconfig(".config/04-book/refresh", "3");
|
|
ui->comboBox->setCurrentText("3 pages");
|
|
}
|
|
else {
|
|
int refreshInt = checkconfig_str_val.toInt();
|
|
if(refreshInt == -1) {
|
|
ui->comboBox->setCurrentText("Never refresh");
|
|
}
|
|
if(refreshInt == 0) {
|
|
ui->comboBox->setCurrentText("Every page");
|
|
}
|
|
if(refreshInt == 1) {
|
|
ui->comboBox->setCurrentText("1 page");
|
|
}
|
|
if(refreshInt == 2) {
|
|
ui->comboBox->setCurrentText("2 pages");
|
|
}
|
|
if(refreshInt == 3) {
|
|
ui->comboBox->setCurrentText("3 pages");
|
|
}
|
|
if(refreshInt == 4) {
|
|
ui->comboBox->setCurrentText("4 pages");
|
|
}
|
|
if(refreshInt == 5) {
|
|
ui->comboBox->setCurrentText("5 pages");
|
|
}
|
|
if(refreshInt == 6) {
|
|
ui->comboBox->setCurrentText("6 pages");
|
|
}
|
|
}
|
|
|
|
// Sleep mode timeout
|
|
string_checkconfig_ro(".config/15-sleep_timeout/config");
|
|
if(checkconfig_str_val == "") {
|
|
// Set default option, '15 minutes'
|
|
string_writeconfig(".config/15-sleep_timeout/config", "15");
|
|
ui->sleepTimeoutComboBox->setCurrentText("15 minutes");
|
|
}
|
|
else {
|
|
int sleepTimeoutInt = checkconfig_str_val.toInt();
|
|
if(sleepTimeoutInt == -1) {
|
|
ui->sleepTimeoutComboBox->setCurrentText("Never");
|
|
}
|
|
if(sleepTimeoutInt == 2) {
|
|
ui->sleepTimeoutComboBox->setCurrentText("2 minutes");
|
|
}
|
|
if(sleepTimeoutInt == 5) {
|
|
ui->sleepTimeoutComboBox->setCurrentText("5 minutes");
|
|
}
|
|
if(sleepTimeoutInt == 10) {
|
|
ui->sleepTimeoutComboBox->setCurrentText("10 minutes");
|
|
}
|
|
if(sleepTimeoutInt == 15) {
|
|
ui->sleepTimeoutComboBox->setCurrentText("15 minutes");
|
|
}
|
|
if(sleepTimeoutInt == 30) {
|
|
ui->sleepTimeoutComboBox->setCurrentText("30 minutes");
|
|
}
|
|
if(sleepTimeoutInt == 60) {
|
|
ui->sleepTimeoutComboBox->setCurrentText("60 minutes");
|
|
}
|
|
}
|
|
|
|
// Lock screen
|
|
if(checkconfig(".config/12-lockscreen/config") == true) {
|
|
ui->enableLockscreenCheckBox->click();
|
|
}
|
|
|
|
// Global reading settings
|
|
if(checkconfig(".config/16-global_reading_settings/config") == true) {
|
|
ui->globalReadingSettingsCheckBox->click();
|
|
}
|
|
|
|
// Encrypted storage
|
|
if(checkconfig(".config/18-encrypted_storage/status") == true) {
|
|
ui->enableEncryptedStorageCheckBox->click();
|
|
}
|
|
else {
|
|
// Next interaction will be by the user
|
|
enableEncryptedStorageUserChange = true;
|
|
}
|
|
if(getEncFSStatus() == false) {
|
|
ui->repackLabel->hide();
|
|
ui->repackBtn->hide();
|
|
}
|
|
|
|
// DPI checkbox
|
|
string_checkconfig(".config/09-dpi/config");
|
|
// Check if the string is a number; else, we don't check the check box
|
|
if(checkconfig_str_val == "false") {
|
|
string_writeconfig(".config/09-dpi/config-enabled", "false");
|
|
}
|
|
else {
|
|
string_writeconfig(".config/09-dpi/config-enabled", "true");
|
|
}
|
|
if(checkconfig(".config/09-dpi/config-enabled") == true) {
|
|
ui_not_user_change = true;
|
|
ui->enableUiScalingCheckBox->click();
|
|
}
|
|
|
|
// Timezone
|
|
ui->tzComboBox->addItems(QStringList(readFile(":/resources/tzlist").split("\n", Qt::SkipEmptyParts)));
|
|
timezone_not_user_change = true;
|
|
if(readFile(".config/19-timezone/config-name").isEmpty()) {
|
|
ui->tzComboBox->setCurrentText("UTC");
|
|
}
|
|
else {
|
|
ui->tzComboBox->setCurrentText(readFile(".config/19-timezone/config-name"));
|
|
}
|
|
|
|
if(checkconfig("/opt/inkbox_genuine") == true) {
|
|
// Enforcing security policy if the user has not rooted the device
|
|
if(checkconfig("/external_root/opt/root/rooted") == true) {
|
|
ui->requestLeaseBtn->show();
|
|
ui->label_4->show();
|
|
ui->label_3->show();
|
|
ui->line_3->show();
|
|
}
|
|
else {
|
|
ui->requestLeaseBtn->hide();
|
|
ui->label_4->hide();
|
|
ui->label_3->hide();
|
|
ui->line_3->hide();
|
|
}
|
|
ui->securityLabel->show();
|
|
ui->line_2->show();
|
|
ui->enableLockscreenCheckBox->show();
|
|
ui->setPasscodeBtn->show();
|
|
ui->setPasscodeLabel->show();
|
|
ui->usbmsBtn->show();
|
|
ui->label_5->show();
|
|
ui->label_6->show();
|
|
ui->line_7->show();
|
|
ui->okBtn->setText("OK");
|
|
}
|
|
else {
|
|
ui->label_8->setText("Reset InkBox");
|
|
}
|
|
|
|
if(global::device::isWifiAble == false) {
|
|
ui->checkOtaUpdateLabel->hide();
|
|
ui->checkOtaUpdateBtn->hide();
|
|
ui->checkOtaUpdateLabel->deleteLater();
|
|
ui->checkOtaUpdateBtn->deleteLater();
|
|
ui->checkOtaUpdateGridLayout->deleteLater();
|
|
}
|
|
|
|
QFile stylesheetFile("/mnt/onboard/.adds/inkbox/eink.qss");
|
|
stylesheetFile.open(QFile::ReadOnly);
|
|
this->setStyleSheet(stylesheetFile.readAll());
|
|
stylesheetFile.close();
|
|
}
|
|
|
|
settings::~settings()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void settings::on_okBtn_clicked() {
|
|
// Prevent potential unknown damage launching via shell script this could do
|
|
if(launch_sh == true) {
|
|
if(ui_enable_changed == true) {
|
|
ui_enable_changed = false;
|
|
global::settings::settingsRebootDialog = true;
|
|
generalDialogWindow = new generalDialog();
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
}
|
|
else {
|
|
QProcess process;
|
|
process.startDetached("inkbox.sh", QStringList());
|
|
qApp->quit();
|
|
}
|
|
}
|
|
else {
|
|
QProcess process;
|
|
process.startDetached("inkbox", QStringList());
|
|
qApp->quit();
|
|
}
|
|
}
|
|
|
|
void settings::on_aboutBtn_clicked()
|
|
{
|
|
log("Showing About message box", className);
|
|
if(checkconfig("/opt/inkbox_genuine") == true) {
|
|
QString aboutmsg = "InkBox is an open-source, Qt-based eBook reader. It aims to bring you the latest Qt features while being also fast and responsive.";
|
|
aboutmsg.prepend("<font face='u001'>");
|
|
string_checkconfig_ro("/external_root/opt/isa/version");
|
|
aboutmsg.append("<br><br>InkBox ");
|
|
aboutmsg.append(checkconfig_str_val);
|
|
aboutmsg.append("</font>");
|
|
QMessageBox::information(this, tr("Information"), aboutmsg);
|
|
}
|
|
else {
|
|
QMessageBox::information(this, tr("About"), tr("InkBox is an open-source Qt-based eBook reader. It aims to bring you the latest Qt features while being also fast and responsive."));
|
|
}
|
|
}
|
|
|
|
void settings::on_demoCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "demo setting (change MainWindow label)";
|
|
// Write to config file
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
checked_box = true;
|
|
writeconfig(".config/01-demo/config", "InkboxChangeLabel=");
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
checked_box = false;
|
|
writeconfig(".config/01-demo/config", "InkboxChangeLabel=");
|
|
}
|
|
}
|
|
|
|
void settings::on_clockCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "clock with seconds setting";
|
|
// Write to config file
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
checked_box = true;
|
|
writeconfig(".config/02-clock/config", "ClockShowSeconds=");
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
checked_box = false;
|
|
writeconfig(".config/02-clock/config", "ClockShowSeconds=");
|
|
}
|
|
}
|
|
|
|
void settings::on_quoteCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "show quotes setting";
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
checked_box = true;
|
|
writeconfig(".config/05-quote/config", "DisableQuote=");
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
checked_box = false;
|
|
writeconfig(".config/05-quote/config", "DisableQuote=");
|
|
}
|
|
}
|
|
|
|
void settings::on_requestLeaseBtn_clicked()
|
|
{
|
|
log("Requesting DHCP lease", className);
|
|
QString prog ("chroot");
|
|
QStringList args;
|
|
args << "/external_root" << "/usr/sbin/dhclient";
|
|
QProcess *proc = new QProcess();
|
|
proc->start(prog, args);
|
|
proc->waitForFinished();
|
|
proc->deleteLater();
|
|
}
|
|
|
|
void settings::on_usbmsBtn_clicked()
|
|
{
|
|
usbms_launch();
|
|
}
|
|
|
|
// Now I know that QStackedWidgets exist... ;p
|
|
|
|
void settings::on_previousBtn_clicked()
|
|
{
|
|
log("'Previous' button clicked", className);
|
|
settings_page = settings_page - 1;
|
|
if(settings_page == 1) {
|
|
ui->stackedWidget->setCurrentIndex(0);
|
|
|
|
if(checkconfig("/opt/inkbox_genuine") == true) {
|
|
// Enforcing security policy if the user has not rooted the device
|
|
if(checkconfig("/external_root/opt/root/rooted") == true) {
|
|
ui->requestLeaseBtn->show();
|
|
ui->label_4->show();
|
|
ui->label_3->show();
|
|
ui->line_3->show();
|
|
}
|
|
else {
|
|
ui->requestLeaseBtn->hide();
|
|
ui->label_4->hide();
|
|
ui->label_3->hide();
|
|
ui->line_3->hide();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if(settings_page == 2) {
|
|
ui->stackedWidget->setCurrentIndex(1);
|
|
if(checkconfig("/opt/inkbox_genuine") == true) {
|
|
if(checkconfig("/mnt/onboard/onboard/.inkbox/can_update") == true) {
|
|
ui->updateBtn->show();
|
|
ui->updateLabel->show();
|
|
}
|
|
else {
|
|
ui->updateBtn->show();
|
|
ui->updateLabel->show();
|
|
}
|
|
}
|
|
}
|
|
if(settings_page <= 0) {
|
|
// Prevent unwanted accesses
|
|
settings_page = settings_page + 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
void settings::on_nextBtn_clicked()
|
|
{
|
|
log("'Next' button clicked", className);
|
|
settings_page = settings_page + 1;
|
|
if(settings_page == 2) {
|
|
ui->stackedWidget->setCurrentIndex(1);
|
|
|
|
if(checkconfig("/opt/inkbox_genuine") == true) {
|
|
// Enforcing security policy if the user has not rooted the device
|
|
if(checkconfig("/external_root/opt/root/rooted") == true) {
|
|
ui->requestLeaseBtn->show();
|
|
ui->label_4->show();
|
|
ui->label_3->show();
|
|
ui->line_3->show();
|
|
}
|
|
else {
|
|
ui->requestLeaseBtn->hide();
|
|
ui->label_4->hide();
|
|
ui->label_3->hide();
|
|
ui->line_3->hide();
|
|
}
|
|
|
|
if(checkconfig("/mnt/onboard/onboard/.inkbox/can_update") == true) {
|
|
ui->updateBtn->show();
|
|
ui->updateLabel->show();
|
|
}
|
|
}
|
|
}
|
|
if(settings_page >= 3) {
|
|
settings_page = settings_page - 1;
|
|
}
|
|
}
|
|
|
|
void settings::on_wordsNumber_valueChanged(int arg1)
|
|
{
|
|
QString number = QString::number(arg1);
|
|
string number_str = number.toStdString();
|
|
string_writeconfig(".config/07-words_number/config", number_str);
|
|
log("Set text files words number to " + number, className);
|
|
}
|
|
|
|
void settings::on_updateBtn_clicked()
|
|
{
|
|
log("'Update' button clicked", className);
|
|
string_writeconfig("/mnt/onboard/onboard/.inkbox/can_really_update", "true");
|
|
string_writeconfig("/external_root/opt/update/will_update", "true");
|
|
string_writeconfig("/external_root/boot/flags/WILL_UPDATE", "true");
|
|
QString prog ("/sbin/reboot");
|
|
QStringList args;
|
|
QProcess *proc = new QProcess();
|
|
proc->start(prog, args);
|
|
proc->waitForFinished();
|
|
proc->deleteLater();
|
|
}
|
|
|
|
void settings::on_darkModeCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "dark mode setting";
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
string_writeconfig(".config/10-dark_mode/config", "true");
|
|
string_writeconfig("/tmp/invertScreen", "y");
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
string_writeconfig(".config/10-dark_mode/config", "false");
|
|
string_writeconfig("/tmp/invertScreen", "n");
|
|
}
|
|
}
|
|
|
|
void settings::on_uiScalingSlider_valueChanged(int value)
|
|
{
|
|
log("Setting DPI level to " + QString::number(value), className);
|
|
if(value == 0) {
|
|
if(global::deviceID == "n705\n") {
|
|
string_writeconfig(".config/09-dpi/config", "187");
|
|
}
|
|
if(global::deviceID == "n905\n" or global::deviceID == "kt\n") {
|
|
string_writeconfig(".config/09-dpi/config", "160");
|
|
}
|
|
if(global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n306\n") {
|
|
string_writeconfig(".config/09-dpi/config", "195");
|
|
}
|
|
if(global::deviceID == "n437\n") {
|
|
string_writeconfig(".config/09-dpi/config", "275");
|
|
}
|
|
if(global::deviceID == "n873\n") {
|
|
string_writeconfig(".config/09-dpi/config", "285");
|
|
}
|
|
}
|
|
if(value == 1) {
|
|
if(global::deviceID == "n705\n") {
|
|
string_writeconfig(".config/09-dpi/config", "214");
|
|
}
|
|
if(global::deviceID == "n905\n" or global::deviceID == "kt\n") {
|
|
string_writeconfig(".config/09-dpi/config", "187");
|
|
}
|
|
if(global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n306\n") {
|
|
string_writeconfig(".config/09-dpi/config", "210");
|
|
}
|
|
if(global::deviceID == "n437\n") {
|
|
string_writeconfig(".config/09-dpi/config", "290");
|
|
}
|
|
if(global::deviceID == "n873\n") {
|
|
string_writeconfig(".config/09-dpi/config", "300");
|
|
}
|
|
}
|
|
if(value == 2) {
|
|
if(global::deviceID == "n705\n") {
|
|
string_writeconfig(".config/09-dpi/config", "227");
|
|
}
|
|
if(global::deviceID == "n905\n" or global::deviceID == "kt\n") {
|
|
string_writeconfig(".config/09-dpi/config", "200");
|
|
}
|
|
if(global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n306\n") {
|
|
string_writeconfig(".config/09-dpi/config", "225");
|
|
}
|
|
if(global::deviceID == "n437\n") {
|
|
string_writeconfig(".config/09-dpi/config", "305");
|
|
}
|
|
if(global::deviceID == "n873\n") {
|
|
string_writeconfig(".config/09-dpi/config", "315");
|
|
}
|
|
}
|
|
|
|
// Making sense for the user
|
|
value = value + 1;
|
|
QString value_qstr = QString::number(value);
|
|
ui->uiScaleNumberLabel->setText(value_qstr);
|
|
|
|
if(not_user_change == true) {
|
|
launch_sh = false;
|
|
// If value is changed, it will launch inkbox.sh detached when "OK" is pressed.
|
|
not_user_change = false;
|
|
}
|
|
else {
|
|
// This is supposed to happen when the user clicks the slider, and not the software. Refer to setValue() methods for uiScalingSlider in main().
|
|
launch_sh = true;
|
|
}
|
|
}
|
|
|
|
void settings::on_menuBarCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "sticky menu bar setting";
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
checked_box = true;
|
|
writeconfig(".config/11-menubar/sticky", "StickyMenuBar=");
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
checked_box = false;
|
|
writeconfig(".config/11-menubar/sticky", "StickyMenuBar=");
|
|
}
|
|
}
|
|
|
|
void settings::on_comboBox_currentIndexChanged(const QString &arg1)
|
|
{
|
|
log("Setting page refresh setting to " + arg1, className);
|
|
if(arg1 == "Every page") {
|
|
string_writeconfig(".config/04-book/refresh", "0");
|
|
}
|
|
if(arg1 == "1 page") {
|
|
string_writeconfig(".config/04-book/refresh", "1");
|
|
}
|
|
if(arg1 == "2 pages") {
|
|
string_writeconfig(".config/04-book/refresh", "2");
|
|
}
|
|
if(arg1 == "3 pages") {
|
|
string_writeconfig(".config/04-book/refresh", "3");
|
|
}
|
|
if(arg1 == "4 pages") {
|
|
string_writeconfig(".config/04-book/refresh", "4");
|
|
}
|
|
if(arg1 == "5 pages") {
|
|
string_writeconfig(".config/04-book/refresh", "5");
|
|
}
|
|
if(arg1 == "6 pages") {
|
|
string_writeconfig(".config/04-book/refresh", "6");
|
|
}
|
|
if(arg1 == "Never refresh") {
|
|
string_writeconfig(".config/04-book/refresh", "-1");
|
|
}
|
|
}
|
|
|
|
void settings::on_resetBtn_clicked()
|
|
{
|
|
log("'Reset' button clicked", className);
|
|
// We write to a temporary file to show a "Reset" prompt
|
|
string_writeconfig("/inkbox/resetDialog", "true");
|
|
|
|
// We setup the dialog
|
|
log("Showing reset dialog", className);
|
|
generalDialogWindow = new generalDialog();
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
}
|
|
|
|
void settings::on_setPasscodeBtn_clicked()
|
|
{
|
|
log("'Set passcode' button clicked", className);
|
|
log("Launching lockscreen binary", className);
|
|
string_writeconfig("/tmp/setPasscode", "true");
|
|
QProcess process;
|
|
process.startDetached("lockscreen", QStringList());
|
|
qApp->quit();
|
|
}
|
|
|
|
void settings::on_enableLockscreenCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "lockscreen setting";
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
string_writeconfig(".config/12-lockscreen/config", "true");
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
string_writeconfig(".config/12-lockscreen/config", "false");
|
|
}
|
|
}
|
|
|
|
void settings::on_enableUiScalingCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "UI scaling setting";
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
// Writing default value depending on the device
|
|
if(global::deviceID == "n705\n") {
|
|
string_writeconfig(".config/09-dpi/config", "187");
|
|
}
|
|
else if(global::deviceID == "n905\n" or global::deviceID == "kt\n") {
|
|
string_writeconfig(".config/09-dpi/config", "160");
|
|
}
|
|
else if(global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n306\n") {
|
|
string_writeconfig(".config/09-dpi/config", "195");
|
|
}
|
|
else if(global::deviceID == "n437\n") {
|
|
string_writeconfig(".config/09-dpi/config", "275");
|
|
}
|
|
else if(global::deviceID == "n873\n") {
|
|
string_writeconfig(".config/09-dpi/config", "285");
|
|
}
|
|
else {
|
|
string_writeconfig(".config/09-dpi/config", "187");
|
|
}
|
|
string_writeconfig(".config/09-dpi/config-enabled", "true");
|
|
ui->uiScaleNumberLabel->show();
|
|
ui->uiScalingSlider->show();
|
|
ui->uiScalingLabel->show();
|
|
launch_sh = true;
|
|
if(ui_not_user_change == true) {
|
|
ui_enable_changed = false;
|
|
}
|
|
else {
|
|
ui_enable_changed = true;
|
|
}
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
string_writeconfig(".config/09-dpi/config", "false");
|
|
string_writeconfig(".config/09-dpi/config-enabled", "false");
|
|
ui->uiScaleNumberLabel->hide();
|
|
ui->uiScalingSlider->hide();
|
|
ui->uiScalingLabel->hide();
|
|
launch_sh = true;
|
|
ui_enable_changed = true;
|
|
}
|
|
}
|
|
|
|
void settings::on_showSystemInfoBtn_clicked()
|
|
{
|
|
log("'Show system info' button clicked", className);
|
|
getSystemInfo();
|
|
global::usbms::usbmsDialog = false;
|
|
global::text::textBrowserContents = global::systemInfoText;
|
|
global::text::textBrowserDialog = true;
|
|
|
|
// Show a system info dialog
|
|
log("Showing system info dialog", className);
|
|
generalDialogWindow = new generalDialog();
|
|
if(global::deviceID == "n306\n") {
|
|
generalDialogWindow->yIncrease = 2.6;
|
|
}
|
|
generalDialogWindow->increaseSize();
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
}
|
|
|
|
void settings::on_pageSizeWidthSpinBox_valueChanged(int arg1)
|
|
{
|
|
std::string value = std::to_string(arg1);
|
|
string_writeconfig(".config/13-epub_page_size/width", value);
|
|
string_writeconfig(".config/13-epub_page_size/set", "true");
|
|
log("Set ePUB page size width to " + QString::number(arg1), className);
|
|
}
|
|
|
|
void settings::on_pageSizeHeightSpinBox_valueChanged(int arg1)
|
|
{
|
|
std::string value = std::to_string(arg1);
|
|
string_writeconfig(".config/13-epub_page_size/height", value);
|
|
string_writeconfig(".config/13-epub_page_size/set", "true");
|
|
log("Set ePUB page size height to " + QString::number(arg1), className);
|
|
}
|
|
|
|
void settings::on_readerScrollBarCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "scrollbar display if necessary setting";
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
string_writeconfig(".config/14-reader_scrollbar/config", "true");
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
string_writeconfig(".config/14-reader_scrollbar/config", "false");
|
|
}
|
|
}
|
|
|
|
void settings::on_sleepTimeoutComboBox_currentIndexChanged(const QString &arg1)
|
|
{
|
|
log("Setting sleep timeout setting to " + arg1, className);
|
|
setDefaultWorkDir();
|
|
if(arg1 == "Never") {
|
|
string_writeconfig(".config/15-sleep_timeout/config", "-1");
|
|
}
|
|
if(arg1 == "2 minutes") {
|
|
string_writeconfig(".config/15-sleep_timeout/config", "2");
|
|
}
|
|
if(arg1 == "5 minutes") {
|
|
string_writeconfig(".config/15-sleep_timeout/config", "5");
|
|
}
|
|
if(arg1 == "10 minutes") {
|
|
string_writeconfig(".config/15-sleep_timeout/config", "10");
|
|
}
|
|
if(arg1 == "15 minutes") {
|
|
string_writeconfig(".config/15-sleep_timeout/config", "15");
|
|
}
|
|
if(arg1 == "30 minutes") {
|
|
string_writeconfig(".config/15-sleep_timeout/config", "30");
|
|
}
|
|
if(arg1 == "60 minutes") {
|
|
string_writeconfig(".config/15-sleep_timeout/config", "60");
|
|
}
|
|
}
|
|
|
|
void settings::brightnessDown() {
|
|
cinematicBrightness(0, 1);
|
|
}
|
|
|
|
void settings::on_globalReadingSettingsCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "global reading settings setting";
|
|
if(checked == true) {
|
|
logEnabled(settingString);
|
|
checked_box = true;
|
|
writeconfig(".config/16-global_reading_settings/config", "GlobalReadingSettings=");
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
checked_box = false;
|
|
writeconfig(".config/16-global_reading_settings/config", "GlobalReadingSettings=");
|
|
}
|
|
}
|
|
|
|
void settings::on_checkOtaUpdateBtn_clicked()
|
|
{
|
|
log("'Check for OTA update' button clicked", className);
|
|
if(testPing(true) == 0 or global::deviceID == "emu\n") {
|
|
launchOtaUpdater();
|
|
}
|
|
else {
|
|
emit showToast("Wi-Fi connection error");
|
|
}
|
|
}
|
|
|
|
void settings::openUpdateDialog() {
|
|
log("Showing update dialog", className);
|
|
global::mainwindow::updateDialog = true;
|
|
// Write to a temporary file to show an "Update" prompt
|
|
string_writeconfig("/inkbox/updateDialog", "true");
|
|
|
|
// Show the dialog
|
|
generalDialogWindow = new generalDialog(this);
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
connect(generalDialogWindow, SIGNAL(showToast(QString)), SLOT(showToastNative(QString)));
|
|
connect(generalDialogWindow, SIGNAL(closeIndefiniteToast()), SLOT(closeIndefiniteToastNative()));
|
|
QApplication::processEvents();
|
|
}
|
|
|
|
void settings::launchOtaUpdater() {
|
|
global::toast::modalToast = true;
|
|
global::toast::indefiniteToast = true;
|
|
emit showToast("Checking for updates");
|
|
otaManagerWindow = new otaManager(this);
|
|
connect(otaManagerWindow, SIGNAL(canOtaUpdate(bool)), SLOT(openUpdateDialogOTA(bool)));
|
|
otaManagerWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
}
|
|
|
|
void settings::openUpdateDialogOTA(bool open) {
|
|
emit closeIndefiniteToast();
|
|
if(open == true) {
|
|
global::otaUpdate::isUpdateOta = true;
|
|
openUpdateDialog();
|
|
}
|
|
else {
|
|
emit showToast("No update available");
|
|
}
|
|
}
|
|
|
|
void settings::showToastNative(QString messageToDisplay) {
|
|
emit showToast(messageToDisplay);
|
|
}
|
|
|
|
void settings::closeIndefiniteToastNative() {
|
|
emit closeIndefiniteToast();
|
|
}
|
|
|
|
void settings::usbms_launch()
|
|
{
|
|
log("Showing USBMS splash", className);
|
|
global::usbms::launchUsbms = true;
|
|
|
|
usbmsWindow = new usbms_splash();
|
|
usbmsWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
usbmsWindow->setGeometry(QRect(QPoint(0,0), screen()->geometry ().size()));
|
|
usbmsWindow->show();
|
|
}
|
|
|
|
void settings::quit_restart() {
|
|
// If existing, cleaning bookconfig_mount mountpoint
|
|
string_writeconfig("/opt/ibxd", "bookconfig_unmount\n");
|
|
|
|
// Restarting InkBox
|
|
QProcess process;
|
|
process.startDetached("inkbox", QStringList());
|
|
qApp->quit();
|
|
}
|
|
|
|
void settings::on_enableEncryptedStorageCheckBox_toggled(bool checked)
|
|
{
|
|
QString settingString = "encrypted storage setting";
|
|
if(checked == true) {
|
|
if(enableEncryptedStorageUserChange == true) {
|
|
logEnabled(settingString);
|
|
setDefaultWorkDir();
|
|
string_writeconfig(".config/18-encrypted_storage/initial_setup_done", "false");
|
|
string_writeconfig(".config/18-encrypted_storage/status", "true");
|
|
if(QFile::exists(".config/18-encrypted_storage/storage_list")) {
|
|
QFile::remove(".config/18-encrypted_storage/storage_list");
|
|
}
|
|
global::settings::settingsRebootDialog = true;
|
|
global::encfs::enableStorageEncryptionDialog = true;
|
|
generalDialogWindow = new generalDialog(this);
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
}
|
|
else {
|
|
enableEncryptedStorageUserChange = true;
|
|
}
|
|
}
|
|
else {
|
|
logDisabled(settingString);
|
|
global::encfs::disableStorageEncryptionDialog = true;
|
|
generalDialogWindow = new generalDialog(this);
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
connect(generalDialogWindow, SIGNAL(cancelDisableStorageEncryption()), SLOT(cancelDisableStorageEncryption()));
|
|
connect(generalDialogWindow, SIGNAL(disableStorageEncryption()), SLOT(disableStorageEncryption()));
|
|
}
|
|
}
|
|
|
|
void settings::disableStorageEncryption() {
|
|
log("Disabling encrypted storage", className);
|
|
setDefaultWorkDir();
|
|
string_writeconfig("/external_root/run/encfs_stop_cleanup", "true");
|
|
string_writeconfig("/opt/ibxd", "encfs_stop\n");
|
|
QThread::msleep(5000);
|
|
|
|
string_writeconfig(".config/18-encrypted_storage/status", "false");
|
|
QFile::remove(".config/18-encrypted_storage/initial_setup_done");
|
|
QFile::remove(".config/18-encrypted_storage/storage_list");
|
|
QFile::remove("/mnt/onboard/onboard/data.encfs");
|
|
|
|
QDir dumpDir("/mnt/onboard/onboard/encfs-dropbox");
|
|
dumpDir.removeRecursively();
|
|
QDir decDir("/mnt/onboard/onboard/encfs-decrypted");
|
|
decDir.removeRecursively();
|
|
|
|
global::settings::settingsRebootDialog = true;
|
|
generalDialogWindow = new generalDialog(this);
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
}
|
|
|
|
void settings::cancelDisableStorageEncryption() {
|
|
enableEncryptedStorageUserChange = false;
|
|
ui->enableEncryptedStorageCheckBox->click();
|
|
}
|
|
|
|
void settings::on_repackBtn_clicked()
|
|
{
|
|
log("'Repack encrypted storage' button clicked", className);
|
|
QDir dir("/mnt/onboard/onboard/encfs-dropbox");
|
|
if(dir.isEmpty()) {
|
|
log("Showing encrypted storage repack error dialog ('encfs-dropbox' directory is empty)", className);
|
|
global::encfs::errorNoBooksInDropboxDialog = true;
|
|
generalDialogWindow = new generalDialog(this);
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
}
|
|
else {
|
|
log("Showing encrypted storage repack dialog", className);
|
|
string_writeconfig("/external_root/run/encfs_repack", "true");
|
|
quit_restart();
|
|
}
|
|
}
|
|
|
|
void settings::on_generateSystemReportBtn_clicked()
|
|
{
|
|
log("'Generate system report' button clicked", className);
|
|
log("Generating system report", className);
|
|
string_writeconfig("/opt/ibxd", "generate_system_report\n");
|
|
while(true) {
|
|
if(QFile::exists("/inkbox/systemReportDone")) {
|
|
if(checkconfig("/inkbox/systemReportDone") == true) {
|
|
emit showToast("System report generated successfully");
|
|
}
|
|
else {
|
|
emit showToast("Error in generating system report");
|
|
}
|
|
QFile::remove("/inkbox/systemReportDone");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void settings::on_tzComboBox_currentTextChanged(const QString &arg1)
|
|
{
|
|
if(timezone_not_user_change == true) {
|
|
timezone_not_user_change = false;
|
|
}
|
|
else {
|
|
log("Setting timezone to " + arg1, className);
|
|
setDefaultWorkDir();
|
|
// Preventing unnecessary (e)MMC writes
|
|
if(readFile(".config/19-timezone/config-name") != arg1) {
|
|
QProcess::execute("ln", QStringList() << "-sf" << "/usr/share/zoneinfo/" + arg1 << ".config/19-timezone/config");
|
|
string_writeconfig(".config/19-timezone/config-name", arg1.toStdString());
|
|
string_writeconfig("/opt/ibxd", "gui_remount_localtime\n");
|
|
QThread::msleep(500);
|
|
}
|
|
}
|
|
}
|
|
|
|
void settings::logEnabled(QString settingString) {
|
|
log("Enabling " + settingString, className);
|
|
}
|
|
|
|
void settings::logDisabled(QString settingString) {
|
|
log("Disabling " + settingString, className);
|
|
}
|