mirror of
https://github.com/Quill-OS/quill.git
synced 2024-10-31 21:33:22 -07:00
Basic home screen + other improvements
This commit is contained in:
parent
8eea1d0df5
commit
7822f65e02
14 changed files with 375 additions and 104 deletions
25
functions.h
25
functions.h
|
@ -19,6 +19,7 @@
|
|||
#include <QJsonObject>
|
||||
#include <QJsonValue>
|
||||
#include <QJsonArray>
|
||||
#include <QCryptographicHash>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
|
@ -52,6 +53,7 @@ namespace global {
|
|||
namespace mainwindow {
|
||||
namespace tabSwitcher {
|
||||
inline bool repaint;
|
||||
inline bool homePageWidgetCreated;
|
||||
inline bool appsWidgetCreated;
|
||||
inline bool appsWidgetSelected;
|
||||
inline bool settingsChooserWidgetCreated;
|
||||
|
@ -127,6 +129,7 @@ namespace global {
|
|||
namespace localLibrary {
|
||||
static inline QString rawDatabasePath = "/inkbox/LocalLibrary.db.raw";
|
||||
static inline QString databasePath = "/mnt/onboard/onboard/.inkbox/LocalLibrary.db";
|
||||
static inline QString recentBooksDatabasePath = "/mnt/onboard/onboard/.inkbox/RecentBooks.db";
|
||||
}
|
||||
namespace localStorage {
|
||||
inline QStringList searchResultsPaths;
|
||||
|
@ -135,11 +138,14 @@ namespace global {
|
|||
inline bool status;
|
||||
}
|
||||
namespace userApps {
|
||||
inline bool appCompatibilityDialog;
|
||||
inline QString appCompatibilityText;
|
||||
inline bool appCompatibilityLastContinueStatus = true; // This is for RequiredFeatures to show only one dialog if 'Cancel' is clicked.
|
||||
inline bool appInfoDialog;
|
||||
inline bool launchApp;
|
||||
inline bool appCompatibilityDialog;
|
||||
inline QString appCompatibilityText;
|
||||
inline bool appCompatibilityLastContinueStatus = true; // This is for RequiredFeatures to show only one dialog if 'Cancel' is clicked.
|
||||
inline bool appInfoDialog;
|
||||
inline bool launchApp;
|
||||
}
|
||||
namespace homePageWidget {
|
||||
inline int recentBooksNumber = 4;
|
||||
}
|
||||
inline QString systemInfoText;
|
||||
inline bool forbidOpenSearchDialog;
|
||||
|
@ -959,6 +965,15 @@ namespace {
|
|||
}
|
||||
}
|
||||
}
|
||||
QByteArray fileChecksum(const QString &fileName, QCryptographicHash::Algorithm hashAlgorithm) {
|
||||
QFile f(fileName);
|
||||
if (f.open(QFile::ReadOnly)) {
|
||||
QCryptographicHash hash(hashAlgorithm);
|
||||
if (hash.addData(&f)) {
|
||||
return hash.result();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // FUNCTIONS_H
|
||||
|
|
117
homepagewidget.cpp
Normal file
117
homepagewidget.cpp
Normal file
|
@ -0,0 +1,117 @@
|
|||
#include "homepagewidget.h"
|
||||
#include "ui_homepagewidget.h"
|
||||
|
||||
#include <QScreen>
|
||||
|
||||
#include "functions.h"
|
||||
|
||||
homePageWidget::homePageWidget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::homePageWidget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
verticalLayoutArray.resize(global::homePageWidget::recentBooksNumber);
|
||||
bookBtnArray.resize(global::homePageWidget::recentBooksNumber);
|
||||
bookTitleArray.resize(global::homePageWidget::recentBooksNumber);
|
||||
|
||||
// Getting the screen's size
|
||||
sW = QGuiApplication::screens()[0]->size().width();
|
||||
sH = QGuiApplication::screens()[0]->size().height();
|
||||
|
||||
if(global::deviceID == "n705\n" or global::deviceID == "n905\n" or global::deviceID == "kt\n") {
|
||||
stdIconWidthDivider = 8;
|
||||
stdIconHeightDivider = 8;
|
||||
stdIconWidth = sW / stdIconWidthDivider;
|
||||
stdIconHeight = sH / stdIconHeightDivider;
|
||||
}
|
||||
else if(global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n306\n") {
|
||||
stdIconWidthDivider = 7;
|
||||
stdIconHeightDivider = 7;
|
||||
stdIconWidth = sW / stdIconWidthDivider;
|
||||
stdIconWidth = sH / stdIconHeightDivider;
|
||||
}
|
||||
else if(global::deviceID == "n437\n") {
|
||||
stdIconWidthDivider = 6.5;
|
||||
stdIconHeightDivider = 6.5;
|
||||
stdIconWidth = sW / stdIconWidthDivider;
|
||||
stdIconHeight = sH / stdIconHeightDivider;
|
||||
}
|
||||
else if(global::deviceID == "n873\n") {
|
||||
stdIconWidthDivider = 6;
|
||||
stdIconHeightDivider = 6;
|
||||
stdIconWidth = sW / stdIconWidthDivider;
|
||||
stdIconHeight = sH / stdIconHeightDivider;
|
||||
}
|
||||
else {
|
||||
stdIconWidthDivider = 8;
|
||||
stdIconHeightDivider = 8;
|
||||
stdIconWidth = sW / stdIconWidthDivider;
|
||||
stdIconHeight = sH / stdIconHeightDivider;
|
||||
}
|
||||
|
||||
log("Reading database", className);
|
||||
QFile database(global::localLibrary::databasePath);
|
||||
QByteArray data;
|
||||
if(database.open(QIODevice::ReadOnly)) {
|
||||
data = database.readAll();
|
||||
database.close();
|
||||
}
|
||||
else {
|
||||
QString function = __func__; log(function + ": Failed to open local library database file for reading at '" + database.fileName() + "'", className);
|
||||
}
|
||||
|
||||
QJsonObject databaseJsonObject = QJsonDocument::fromJson(qUncompress(QByteArray::fromBase64(data))).object();
|
||||
QJsonArray databaseJsonArrayList = databaseJsonObject["database"].toArray();
|
||||
int databaseBooksNumber = databaseJsonArrayList.size();
|
||||
QJsonObject recentBooksJsonObject = QJsonDocument::fromJson(readFile(global::localLibrary::recentBooksDatabasePath).toUtf8()).object();
|
||||
|
||||
log("Setting up home page", className);
|
||||
|
||||
for(int i = 1; i <= global::homePageWidget::recentBooksNumber; i++) {
|
||||
QString objectName = "Book" + QString::number(i);
|
||||
QJsonObject jsonObject = recentBooksJsonObject[objectName].toObject();
|
||||
QString bookPath = jsonObject.value("BookPath").toString();
|
||||
bookBtnArray[i] = new QClickableLabel(this);
|
||||
|
||||
// Iterate until we find a book matching the recently opened book's "BookPath" key/value pair
|
||||
for(int in = i; in <= databaseBooksNumber; in++) {
|
||||
QJsonObject bookJsonObject = databaseJsonArrayList.at(in - 1).toObject();
|
||||
if(bookJsonObject["BookPath"] == bookPath) {
|
||||
bookBtnArray[i]->setObjectName(QJsonDocument(bookJsonObject).toJson());
|
||||
}
|
||||
}
|
||||
|
||||
verticalLayoutArray[i] = new QVBoxLayout(this);
|
||||
|
||||
QObject::connect(bookBtnArray[i], &QClickableLabel::bookPath, this, &homePageWidget::openBook);
|
||||
bookBtnArray[i]->setAlignment(Qt::AlignCenter);
|
||||
bookBtnArray[i]->setFont(QFont("u001"));
|
||||
bookBtnArray[i]->setStyleSheet("color: black; background-color: white; border-radius: 10px; padding: 10px");
|
||||
|
||||
QString bookIcon = QJsonDocument::fromJson(bookBtnArray[i]->objectName().toUtf8()).object()["CoverPath"].toString();
|
||||
if(QFile::exists(bookIcon)) {
|
||||
bookBtnArray[i]->setPixmap(QPixmap(bookIcon).scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio));
|
||||
}
|
||||
else {
|
||||
bookBtnArray[i]->setPixmap(QPixmap(":/resources/cover_unavailable").scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio));
|
||||
}
|
||||
|
||||
verticalLayoutArray[i]->addWidget(bookBtnArray[i]);
|
||||
ui->horizontalLayout->addLayout(verticalLayoutArray[i]);
|
||||
}
|
||||
QTimer::singleShot(500, this, SLOT(refreshScreenNative()));
|
||||
}
|
||||
|
||||
homePageWidget::~homePageWidget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void homePageWidget::openBook(QString bookPath) {
|
||||
emit openBookSignal(bookPath, false);
|
||||
}
|
||||
|
||||
void homePageWidget::refreshScreenNative() {
|
||||
emit refreshScreen();
|
||||
}
|
42
homepagewidget.h
Normal file
42
homepagewidget.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
#ifndef HOMEPAGEWIDGET_H
|
||||
#define HOMEPAGEWIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QVBoxLayout>
|
||||
#include "qclickablelabel.h"
|
||||
|
||||
namespace Ui {
|
||||
class homePageWidget;
|
||||
}
|
||||
|
||||
class homePageWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QString className = this->metaObject()->className();
|
||||
explicit homePageWidget(QWidget *parent = nullptr);
|
||||
~homePageWidget();
|
||||
int sW;
|
||||
int sH;
|
||||
int stdIconWidth;
|
||||
int stdIconHeight;
|
||||
float stdIconWidthDivider;
|
||||
float stdIconHeightDivider;
|
||||
|
||||
signals:
|
||||
void openBookSignal(QString bookPath, bool relativePath);
|
||||
void refreshScreen();
|
||||
|
||||
private slots:
|
||||
void openBook(QString bookPath);
|
||||
void refreshScreenNative();
|
||||
|
||||
private:
|
||||
Ui::homePageWidget *ui;
|
||||
QVector<QLabel*> bookTitleArray;
|
||||
QVector<QVBoxLayout*> verticalLayoutArray;
|
||||
QVector<QClickableLabel*> bookBtnArray;
|
||||
};
|
||||
|
||||
#endif // HOMEPAGEWIDGET_H
|
76
homepagewidget.ui
Normal file
76
homepagewidget.ui
Normal file
|
@ -0,0 +1,76 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>homePageWidget</class>
|
||||
<widget class="QWidget" name="homePageWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Inter</family>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Continue reading</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="topMargin">
|
||||
<number>25</number>
|
||||
</property>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -32,6 +32,7 @@ SOURCES += \
|
|||
dictionarywidget.cpp \
|
||||
encryptionmanager.cpp \
|
||||
generaldialog.cpp \
|
||||
homepagewidget.cpp \
|
||||
hourglassanimationwidget.cpp \
|
||||
koboxappsdialog.cpp \
|
||||
koboxsettings.cpp \
|
||||
|
@ -65,6 +66,7 @@ HEADERS += \
|
|||
encryptionmanager.h \
|
||||
functions.h \
|
||||
generaldialog.h \
|
||||
homepagewidget.h \
|
||||
hourglassanimationwidget.h \
|
||||
koboxappsdialog.h \
|
||||
koboxsettings.h \
|
||||
|
@ -96,6 +98,7 @@ FORMS += \
|
|||
dictionarywidget.ui \
|
||||
encryptionmanager.ui \
|
||||
generaldialog.ui \
|
||||
homepagewidget.ui \
|
||||
hourglassanimationwidget.ui \
|
||||
koboxappsdialog.ui \
|
||||
koboxsettings.ui \
|
||||
|
|
|
@ -18,6 +18,7 @@ localLibraryWidget::localLibraryWidget(QWidget *parent) :
|
|||
ui->previousPageBtn->setIcon(QIcon(":/resources/chevron-left.png"));
|
||||
ui->nextPageBtn->setIcon(QIcon(":/resources/chevron-right.png"));
|
||||
ui->pageNumberLabel->setFont(QFont("Source Serif Pro"));
|
||||
ui->pageNumberLabel->setStyleSheet("color: black; background-color: white; border-radius: 10px; padding-left: 10px; padding-right: 10px");
|
||||
ui->verticalLayout->setSpacing(4);
|
||||
|
||||
if(global::deviceID == "n705\n") {
|
||||
|
@ -146,7 +147,7 @@ void localLibraryWidget::setupDatabase() {
|
|||
|
||||
QString prog("busybox-initrd");
|
||||
QStringList args;
|
||||
args << "env" << "icon_width_divider=" + QString::number(stdIconWidthDivider) << "icon_height_divider=" + QString::number(stdIconHeightDivider) << "./explore_local_library.sh" << booksList;
|
||||
args << "env" << "icon_width_divider=" + QString::number(stdIconWidthDivider - 1.5) << "icon_height_divider=" + QString::number(stdIconHeightDivider - 1.5) << "./explore_local_library.sh" << booksList;
|
||||
QProcess *proc = new QProcess();
|
||||
proc->start(prog, args);
|
||||
proc->waitForFinished();
|
||||
|
@ -210,7 +211,7 @@ void localLibraryWidget::setupBooksList(int pageNumber) {
|
|||
if(!coverPath.isEmpty()) {
|
||||
// Display book cover if found
|
||||
QPixmap pixmap(coverPath);
|
||||
bookIconArray[in]->setPixmap(pixmap);
|
||||
bookIconArray[in]->setPixmap(pixmap.scaled(stdIconWidth, stdIconHeight, Qt::KeepAspectRatio));
|
||||
}
|
||||
else {
|
||||
QPixmap pixmap(":/resources/cover_unavailable.png");
|
||||
|
@ -260,6 +261,10 @@ void localLibraryWidget::on_previousPageBtn_clicked()
|
|||
ui->previousPageBtn->setEnabled(false);
|
||||
ui->nextPageBtn->setEnabled(true);
|
||||
}
|
||||
else {
|
||||
ui->previousPageBtn->setEnabled(true);
|
||||
ui->nextPageBtn->setEnabled(true);
|
||||
}
|
||||
setupBooksList(currentPageNumber);
|
||||
|
||||
pagesTurned = pagesTurned + 1;
|
||||
|
@ -277,6 +282,10 @@ void localLibraryWidget::on_nextPageBtn_clicked()
|
|||
ui->previousPageBtn->setEnabled(true);
|
||||
ui->nextPageBtn->setEnabled(false);
|
||||
}
|
||||
else {
|
||||
ui->previousPageBtn->setEnabled(true);
|
||||
ui->nextPageBtn->setEnabled(true);
|
||||
}
|
||||
setupBooksList(currentPageNumber);
|
||||
|
||||
pagesTurned = pagesTurned + 1;
|
||||
|
|
|
@ -43,13 +43,27 @@
|
|||
</property>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="1">
|
||||
<spacer name="horizontalSpacer">
|
||||
<item row="0" column="6">
|
||||
<widget class="QPushButton" name="nextPageBtn">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<widget class="QClickableLabel" name="pageNumberLabel">
|
||||
<property name="text">
|
||||
<string>Page</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::MinimumExpanding</enum>
|
||||
<enum>QSizePolicy::Maximum</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
|
@ -59,40 +73,6 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<widget class="QLabel" name="pageNumberLabel">
|
||||
<property name="text">
|
||||
<string>Page</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="6">
|
||||
<widget class="QPushButton" name="nextPageBtn">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="localLibraryLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>Local library</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QPushButton" name="previousPageBtn">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
|
@ -109,13 +89,13 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<item row="0" column="1">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Maximum</enum>
|
||||
<enum>QSizePolicy::MinimumExpanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
|
@ -125,6 +105,26 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QPushButton" name="previousPageBtn">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="localLibraryLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><b>Local library</b></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -151,6 +151,9 @@
|
|||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetNoConstraint</enum>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
|
|
|
@ -564,6 +564,9 @@ void MainWindow::resetWindow(bool resetStackedWidget) {
|
|||
}
|
||||
|
||||
// Destroy widgets
|
||||
if(global::mainwindow::tabSwitcher::homePageWidgetCreated == true) {
|
||||
homePageWidgetWindow->deleteLater();
|
||||
}
|
||||
if(global::mainwindow::tabSwitcher::appsWidgetCreated == true) {
|
||||
appsWindow->deleteLater();
|
||||
}
|
||||
|
@ -577,6 +580,7 @@ void MainWindow::resetWindow(bool resetStackedWidget) {
|
|||
localLibraryWidgetWindow->deleteLater();
|
||||
}
|
||||
|
||||
global::mainwindow::tabSwitcher::homePageWidgetCreated = false;
|
||||
global::mainwindow::tabSwitcher::appsWidgetCreated = false;
|
||||
global::mainwindow::tabSwitcher::settingsChooserWidgetCreated = false;
|
||||
global::mainwindow::tabSwitcher::appsWidgetSelected = false;
|
||||
|
@ -1012,13 +1016,19 @@ void MainWindow::resetWifiIconClickedWhileReconnecting() {
|
|||
|
||||
void MainWindow::setupLocalLibraryWidget() {
|
||||
localLibraryWidgetWindow = new localLibraryWidget(this);
|
||||
connect(localLibraryWidgetWindow, SIGNAL(openBookSignal(QString, bool)), SLOT(openBookFile(QString, bool)));
|
||||
connect(localLibraryWidgetWindow, SIGNAL(refreshScreen()), SLOT(refreshScreen()));
|
||||
QObject::connect(localLibraryWidgetWindow, &localLibraryWidget::openBookSignal, this, &MainWindow::openBookFile);
|
||||
QObject::connect(localLibraryWidgetWindow, &localLibraryWidget::refreshScreen, this, &MainWindow::refreshScreen);
|
||||
localLibraryWidgetWindow->setAttribute(Qt::WA_DeleteOnClose);
|
||||
ui->homeStackedWidget->insertWidget(1, localLibraryWidgetWindow);
|
||||
ui->homeStackedWidget->setCurrentIndex(1);
|
||||
}
|
||||
|
||||
void MainWindow::setupHomePageWidget() {
|
||||
homePageWidgetWindow = new homePageWidget(this);
|
||||
QObject::connect(homePageWidgetWindow, &homePageWidget::openBookSignal, this, &MainWindow::openBookFile);
|
||||
QObject::connect(homePageWidgetWindow, &homePageWidget::refreshScreen, this, &MainWindow::refreshScreen);
|
||||
homePageWidgetWindow->setAttribute(Qt::WA_DeleteOnClose);
|
||||
ui->homeStackedWidget->insertWidget(2, homePageWidgetWindow);
|
||||
ui->homeStackedWidget->setCurrentIndex(2);
|
||||
global::mainwindow::tabSwitcher::homePageWidgetCreated = true;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "otamanager.h"
|
||||
#include "librarywidget.h"
|
||||
#include "locallibrarywidget.h"
|
||||
#include "homepagewidget.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -116,6 +117,7 @@ private:
|
|||
otaManager * otaManagerWindow;
|
||||
libraryWidget * libraryWidgetWindow;
|
||||
localLibraryWidget * localLibraryWidgetWindow;
|
||||
homePageWidget * homePageWidgetWindow;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
|
||||
#include "qclickablelabel.h"
|
||||
|
||||
QClickableLabel::QClickableLabel(QWidget* parent, Qt::WindowFlags f)
|
||||
|
@ -9,11 +12,22 @@ QClickableLabel::~QClickableLabel() {}
|
|||
|
||||
void QClickableLabel::mousePressEvent(QMouseEvent * event) {
|
||||
emit clicked();
|
||||
QClickableLabel::setStyleSheet("color: white; background-color: black; border-radius: 10px; padding: 10px");
|
||||
if(objectName() == "pageNumberLabel") {
|
||||
QClickableLabel::setStyleSheet("color: white; background-color: black; border-radius: 10px; padding-left: 10px; padding-right: 10px");
|
||||
}
|
||||
else {
|
||||
QClickableLabel::setStyleSheet("color: white; background-color: black; border-radius: 10px; padding: 10px");
|
||||
}
|
||||
}
|
||||
|
||||
void QClickableLabel::mouseReleaseEvent(QMouseEvent * event) {
|
||||
emit unclicked();
|
||||
emit bookID(objectName().toInt());
|
||||
QClickableLabel::setStyleSheet("color: black; background-color: white; border-radius: 10px; padding: 10px");
|
||||
emit bookPath(QJsonDocument::fromJson(objectName().toUtf8()).object()["BookPath"].toString());
|
||||
if(objectName() == "pageNumberLabel") {
|
||||
QClickableLabel::setStyleSheet("color: black; background-color: white; border-radius: 10px; padding-left: 10px; padding-right: 10px");
|
||||
}
|
||||
else {
|
||||
QClickableLabel::setStyleSheet("color: black; background-color: white; border-radius: 10px; padding: 10px");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ signals:
|
|||
void clicked();
|
||||
void unclicked();
|
||||
void bookID(int id);
|
||||
void bookPath(QString path);
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent * event);
|
||||
|
|
80
reader.cpp
80
reader.cpp
|
@ -15,8 +15,8 @@
|
|||
#include <QFontDatabase>
|
||||
#include <QDirIterator>
|
||||
#include <QTextCursor>
|
||||
#include <QDebug>
|
||||
#include <QGraphicsScene>
|
||||
#include <QJsonDocument>
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -142,24 +142,6 @@ reader::reader(QWidget *parent) :
|
|||
book_file = global::reader::bookFile;
|
||||
global::reader::bookFile = "";
|
||||
}
|
||||
else {
|
||||
if(global::reader::bookNumber == 1) {
|
||||
string_checkconfig(".config/08-recent_books/1");
|
||||
book_file = checkconfig_str_val;
|
||||
}
|
||||
if(global::reader::bookNumber == 2) {
|
||||
string_checkconfig(".config/08-recent_books/2");
|
||||
book_file = checkconfig_str_val;
|
||||
}
|
||||
if(global::reader::bookNumber == 3) {
|
||||
string_checkconfig(".config/08-recent_books/3");
|
||||
book_file = checkconfig_str_val;
|
||||
}
|
||||
if(global::reader::bookNumber == 4) {
|
||||
string_checkconfig(".config/08-recent_books/4");
|
||||
book_file = checkconfig_str_val;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(checkconfig("/opt/inkbox_genuine") == true) {
|
||||
|
@ -640,40 +622,40 @@ reader::reader(QWidget *parent) :
|
|||
// Way to tell shell scripts that we're in the Reader framework
|
||||
string_writeconfig("/tmp/inkboxReading", "true");
|
||||
|
||||
// Saving the book opened in the favorites list
|
||||
string_checkconfig(".config/08-recent_books/1");
|
||||
book_1 = checkconfig_str_val;
|
||||
string str_book_1 = book_1.toStdString();
|
||||
string_checkconfig(".config/08-recent_books/2");
|
||||
book_2 = checkconfig_str_val;
|
||||
string str_book_2 = book_2.toStdString();
|
||||
string_checkconfig(".config/08-recent_books/3");
|
||||
book_3 = checkconfig_str_val;
|
||||
string str_book_3 = book_3.toStdString();
|
||||
string_checkconfig(".config/08-recent_books/4");
|
||||
book_4 = checkconfig_str_val;
|
||||
std::string str_book_4 = book_4.toStdString();
|
||||
|
||||
// Don't mess up "Recently read books" with random "book.txt" buttons...
|
||||
if(wakeFromSleep == true) {
|
||||
string_checkconfig("/tmp/inkboxBookPath");
|
||||
book_file_str = checkconfig_str_val.toStdString();
|
||||
QJsonObject recentBooksObject;
|
||||
if(QFile::exists(global::localLibrary::recentBooksDatabasePath)) {
|
||||
QJsonObject mainJsonObject = QJsonDocument::fromJson(readFile(global::localLibrary::recentBooksDatabasePath).toUtf8()).object();
|
||||
for(int i = 1; i <= global::homePageWidget::recentBooksNumber; i++) {
|
||||
QString objectName = "Book" + QString::number(i);
|
||||
QJsonObject jsonObject = mainJsonObject[objectName].toObject();
|
||||
if(i == 1) {
|
||||
if(jsonObject.value("BookPath").toString() != book_file) {
|
||||
// Circular buffer
|
||||
for(int i = global::homePageWidget::recentBooksNumber; i >= 2; i--) {
|
||||
mainJsonObject["Book" + QString::number(i)] = mainJsonObject["Book" + QString::number(i - 1)];
|
||||
}
|
||||
jsonObject.insert("BookPath", QJsonValue(book_file));
|
||||
mainJsonObject[objectName] = jsonObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
recentBooksObject = mainJsonObject;
|
||||
}
|
||||
else {
|
||||
book_file_str = book_file.toStdString();
|
||||
string_writeconfig("/tmp/inkboxBookPath", book_file_str);
|
||||
}
|
||||
QJsonObject mainJsonObject;
|
||||
QJsonObject firstJsonObject;
|
||||
firstJsonObject.insert("BookPath", QJsonValue(book_file));
|
||||
mainJsonObject["Book1"] = firstJsonObject;
|
||||
|
||||
if(book_1 == book_file) {
|
||||
;
|
||||
}
|
||||
else {
|
||||
// Moves old items to the right and puts the new one at the left side
|
||||
string_writeconfig(".config/08-recent_books/1", book_file_str);
|
||||
string_writeconfig(".config/08-recent_books/2", str_book_1);
|
||||
string_writeconfig(".config/08-recent_books/3", str_book_2);
|
||||
string_writeconfig(".config/08-recent_books/4", str_book_3);
|
||||
for(int i = 2; i <= global::homePageWidget::recentBooksNumber; i++) {
|
||||
QJsonObject jsonObject;
|
||||
jsonObject.insert("BookPath", QJsonValue(""));
|
||||
mainJsonObject["Book" + QString::number(i)] = jsonObject;
|
||||
}
|
||||
recentBooksObject = mainJsonObject;
|
||||
}
|
||||
QFile::remove(global::localLibrary::recentBooksDatabasePath);
|
||||
writeFile(global::localLibrary::recentBooksDatabasePath, QString(QJsonDocument(recentBooksObject).toJson()));
|
||||
|
||||
// USB mass storage prompt
|
||||
if(global::reader::startUsbmsPrompt == true) {
|
||||
|
|
4
reader.h
4
reader.h
|
@ -75,10 +75,6 @@ public:
|
|||
bool wordwidgetLock;
|
||||
bool isNightModeActive;
|
||||
bool goToSavedPageDone;
|
||||
QString book_1;
|
||||
QString book_2;
|
||||
QString book_3;
|
||||
QString book_4;
|
||||
QString ittext;
|
||||
QString book_file;
|
||||
bool batt_status;
|
||||
|
|
|
@ -1070,6 +1070,7 @@ void settings::on_generateSystemReportBtn_clicked()
|
|||
while(true) {
|
||||
if(QFile::exists("/inkbox/systemReportDone")) {
|
||||
if(checkconfig("/inkbox/systemReportDone") == true) {
|
||||
QFile::remove(global::localLibrary::databasePath);
|
||||
emit showToast("System report generated successfully");
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Reference in a new issue