2021-03-25 05:00:19 -07:00
# include "reader.h"
# include "ui_reader.h"
2021-04-05 06:50:58 -07:00
# include "functions.h"
2021-03-25 05:00:19 -07:00
# include <QProcess>
# include <QFileDialog>
# include <QDir>
# include <QTimer>
# include <QTime>
# include <QMessageBox>
# include <QFont>
# include <QIcon>
# include <QSize>
# include <QDesktopWidget>
# include <QScreen>
2021-04-05 06:50:58 -07:00
# include <QFontDatabase>
2021-03-25 05:00:19 -07:00
using namespace std ;
reader : : reader ( QWidget * parent ) :
QWidget ( parent ) ,
ui ( new Ui : : reader )
{
ui - > setupUi ( this ) ;
ui - > previousBtn - > setProperty ( " type " , " borderless " ) ;
ui - > nextBtn - > setProperty ( " type " , " borderless " ) ;
ui - > hideOptionsBtn - > setProperty ( " type " , " borderless " ) ;
ui - > optionsBtn - > setProperty ( " type " , " borderless " ) ;
ui - > brightnessDecBtn - > setProperty ( " type " , " borderless " ) ;
ui - > brightnessIncBtn - > setProperty ( " type " , " borderless " ) ;
ui - > homeBtn - > setProperty ( " type " , " borderless " ) ;
ui - > aboutBtn - > setProperty ( " type " , " borderless " ) ;
ui - > alignLeftBtn - > setProperty ( " type " , " borderless " ) ;
ui - > alignRightBtn - > setProperty ( " type " , " borderless " ) ;
ui - > alignCenterBtn - > setProperty ( " type " , " borderless " ) ;
ui - > alignLeftBtn - > setProperty ( " type " , " borderless " ) ;
ui - > alignJustifyBtn - > setProperty ( " type " , " borderless " ) ;
ui - > infoCloseBtn - > setProperty ( " type " , " borderless " ) ;
ui - > saveWordBtn - > setProperty ( " type " , " borderless " ) ;
ui - > previousDefinitionBtn - > setProperty ( " type " , " borderless " ) ;
ui - > nextDefinitionBtn - > setProperty ( " type " , " borderless " ) ;
// Icons
ui - > alignLeftBtn - > setText ( " " ) ;
ui - > alignLeftBtn - > setIcon ( QIcon ( " :/resources/align-left.png " ) ) ;
ui - > alignRightBtn - > setText ( " " ) ;
ui - > alignRightBtn - > setIcon ( QIcon ( " :/resources/align-right.png " ) ) ;
ui - > alignCenterBtn - > setText ( " " ) ;
ui - > alignCenterBtn - > setIcon ( QIcon ( " :/resources/align-center.png " ) ) ;
ui - > alignJustifyBtn - > setText ( " " ) ;
ui - > alignJustifyBtn - > setIcon ( QIcon ( " :/resources/align-justify.png " ) ) ;
ui - > infoCloseBtn - > setText ( " " ) ;
ui - > infoCloseBtn - > setIcon ( QIcon ( " :/resources/close.png " ) ) ;
ui - > saveWordBtn - > setText ( " " ) ;
ui - > saveWordBtn - > setIcon ( QIcon ( " :/resources/star.png " ) ) ;
ui - > previousDefinitionBtn - > setText ( " " ) ;
ui - > previousDefinitionBtn - > setIcon ( QIcon ( " :/resources/chevron-left.png " ) ) ;
ui - > nextDefinitionBtn - > setText ( " " ) ;
ui - > nextDefinitionBtn - > setIcon ( QIcon ( " :/resources/chevron-right.png " ) ) ;
2021-03-29 18:46:53 -07:00
ui - > brightnessDecBtn - > setText ( " " ) ;
ui - > brightnessDecBtn - > setIcon ( QIcon ( " :/resources/minus.png " ) ) ;
ui - > brightnessIncBtn - > setText ( " " ) ;
ui - > brightnessIncBtn - > setIcon ( QIcon ( " :/resources/plus.png " ) ) ;
2021-03-25 05:00:19 -07:00
// Making text selectable
ui - > text - > setTextInteractionFlags ( Qt : : TextSelectableByMouse ) ;
// Custom settings
// Font
string_checkconfig ( " .config/04-book/font " ) ;
if ( checkconfig_str_val = = " " ) {
2021-03-30 04:16:41 -07:00
ui - > fontChooser - > setCurrentText ( checkconfig_str_val ) ;
ui - > text - > setFont ( QFont ( " Inter " ) ) ;
2021-03-25 05:00:19 -07:00
}
else {
2021-03-29 18:46:53 -07:00
if ( checkconfig_str_val = = " Crimson Pro " ) {
int id = QFontDatabase : : addApplicationFont ( " :/resources/fonts/CrimsonPro-Regular.ttf " ) ;
QString family = QFontDatabase : : applicationFontFamilies ( id ) . at ( 0 ) ;
QFont crimson ( family ) ;
ui - > text - > setFont ( crimson ) ;
ui - > fontChooser - > setCurrentText ( checkconfig_str_val ) ;
}
else {
QFont config_font ( checkconfig_str_val ) ;
ui - > text - > setFont ( config_font ) ;
ui - > fontChooser - > setCurrentText ( checkconfig_str_val ) ;
}
2021-03-25 05:00:19 -07:00
}
// Alignment
string_checkconfig ( " .config/04-book/alignment " ) ;
if ( checkconfig_str_val = = " " ) {
;
}
else {
if ( checkconfig_str_val = = " Left " ) {
ui - > text - > setAlignment ( Qt : : AlignLeft ) ;
}
if ( checkconfig_str_val = = " Center " ) {
ui - > text - > setAlignment ( Qt : : AlignHCenter ) ;
}
if ( checkconfig_str_val = = " Right " ) {
ui - > text - > setAlignment ( Qt : : AlignRight ) ;
}
if ( checkconfig_str_val = = " Justify " ) {
ui - > text - > setAlignment ( Qt : : AlignJustify ) ;
}
}
// Stylesheet + misc.
QFile stylesheetFile ( " :/resources/eink.qss " ) ;
stylesheetFile . open ( QFile : : ReadOnly ) ;
this - > setStyleSheet ( stylesheetFile . readAll ( ) ) ;
stylesheetFile . close ( ) ;
ui - > sizeValueLabel - > setStyleSheet ( " font-size: 9pt " ) ;
2021-03-27 06:39:58 -07:00
ui - > homeBtn - > setStyleSheet ( " font-size: 9pt; padding: 5px " ) ;
ui - > aboutBtn - > setStyleSheet ( " font-size: 9pt; padding: 5px " ) ;
2021-03-26 21:10:49 -07:00
ui - > fontChooser - > setStyleSheet ( " font-size: 9pt " ) ;
2021-03-25 05:00:19 -07:00
2021-03-26 21:10:49 -07:00
// Hiding the menubar + definition widget + brightness widget
2021-03-25 05:00:19 -07:00
ui - > hideOptionsBtn - > hide ( ) ;
2021-03-27 16:08:05 -07:00
ui - > menuWidget - > setVisible ( false ) ;
2021-03-27 06:39:58 -07:00
ui - > brightnessWidget - > setVisible ( false ) ;
ui - > menuBarWidget - > setVisible ( false ) ;
ui - > wordWidget - > setVisible ( false ) ;
2021-03-26 21:10:49 -07:00
if ( checkconfig ( " .config/11-menubar/sticky " ) = = true ) {
2021-03-27 16:08:05 -07:00
ui - > menuWidget - > setVisible ( true ) ;
2021-03-27 06:39:58 -07:00
ui - > spacerWidget - > setVisible ( true ) ;
ui - > statusBarWidget - > setVisible ( true ) ;
2021-03-26 21:10:49 -07:00
}
else {
2021-03-27 16:08:05 -07:00
ui - > menuWidget - > setVisible ( false ) ;
2021-03-27 06:39:58 -07:00
ui - > spacerWidget - > setVisible ( false ) ;
ui - > statusBarWidget - > setVisible ( false ) ;
2021-03-26 21:10:49 -07:00
}
2021-03-25 05:00:19 -07:00
// Getting brightness level
int brightness_value = get_brightness ( ) ;
ui - > brightnessStatus - > setValue ( brightness_value ) ;
// Defining pixmaps
// Getting the screen's size
float sW = QGuiApplication : : screens ( ) [ 0 ] - > size ( ) . width ( ) ;
float sH = QGuiApplication : : screens ( ) [ 0 ] - > size ( ) . height ( ) ;
// Defining what the icons' size will be
if ( checkconfig ( " /opt/inkbox_genuine " ) = = true ) {
string_checkconfig_ro ( " /opt/inkbox_device " ) ;
2021-04-09 17:54:20 -07:00
if ( checkconfig_str_val = = " n705 \n " or checkconfig_str_val = = " n905 \n " ) {
2021-03-25 05:00:19 -07:00
float stdIconWidth = sW / 16 ;
float stdIconHeight = sW / 16 ;
QPixmap chargingPixmap ( " :/resources/battery_charging.png " ) ;
scaledChargingPixmap = chargingPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap fullPixmap ( " :/resources/battery_full.png " ) ;
scaledFullPixmap = fullPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap halfPixmap ( " :/resources/battery_half.png " ) ;
scaledHalfPixmap = halfPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap emptyPixmap ( " :/resources/battery_empty.png " ) ;
scaledEmptyPixmap = emptyPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
}
else {
float stdIconWidth = sW / 19 ;
float stdIconHeight = sH / 19 ;
QPixmap chargingPixmap ( " :/resources/battery_charging.png " ) ;
scaledChargingPixmap = chargingPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap fullPixmap ( " :/resources/battery_full.png " ) ;
scaledFullPixmap = fullPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap halfPixmap ( " :/resources/battery_half.png " ) ;
scaledHalfPixmap = halfPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap emptyPixmap ( " :/resources/battery_empty.png " ) ;
scaledEmptyPixmap = emptyPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
}
}
else {
float stdIconWidth = sW / 19 ;
float stdIconHeight = sH / 19 ;
QPixmap chargingPixmap ( " :/resources/battery_charging.png " ) ;
scaledChargingPixmap = chargingPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap fullPixmap ( " :/resources/battery_full.png " ) ;
scaledFullPixmap = fullPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap halfPixmap ( " :/resources/battery_half.png " ) ;
scaledHalfPixmap = halfPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
QPixmap emptyPixmap ( " :/resources/battery_empty.png " ) ;
scaledEmptyPixmap = emptyPixmap . scaled ( stdIconWidth , stdIconHeight , Qt : : KeepAspectRatio ) ;
}
2021-03-30 05:24:13 -07:00
// Checking if there is a page refresh setting set
string_checkconfig ( " .config/04-book/refresh " ) ;
if ( checkconfig_str_val = = " " ) {
// Writing the default, refresh every 3 pages
string_writeconfig ( " .config/04-book/refresh " , " 3 " ) ;
string_checkconfig ( " .config/04-book/refresh " ) ;
}
else {
// A config option was set, continuing after the Else statement...
;
}
pageRefreshSetting = checkconfig_str_val . toInt ( ) ;
// Checking if that config option was set to "Never refresh"...
if ( pageRefreshSetting = = - 1 ) {
neverRefresh = true ;
}
else {
// Safety measure
neverRefresh = false ;
}
2021-03-25 05:00:19 -07:00
// Clock setting to show seconds + battery level
if ( checkconfig ( " .config/02-clock/config " ) = = true ) {
QTimer * t = new QTimer ( this ) ;
t - > setInterval ( 500 ) ;
connect ( t , & QTimer : : timeout , [ & ] ( ) {
QString time = QTime : : currentTime ( ) . toString ( " hh:mm:ss " ) ;
get_battery_level ( ) ;
ui - > batteryLabel - > setText ( batt_level ) ;
ui - > timeLabel - > setText ( time ) ;
} ) ;
t - > start ( ) ;
}
else {
QTimer * t = new QTimer ( this ) ;
t - > setInterval ( 500 ) ;
connect ( t , & QTimer : : timeout , [ & ] ( ) {
QString time = QTime : : currentTime ( ) . toString ( " hh:mm " ) ;
get_battery_level ( ) ;
ui - > batteryLabel - > setText ( batt_level ) ;
ui - > timeLabel - > setText ( time ) ;
} ) ;
t - > start ( ) ;
}
// Word selection & dictionary lookup feature
QString dictionary_position_str = QString : : number ( dictionary_position ) ;
ui - > definitionStatusLabel - > setText ( dictionary_position_str ) ;
QTimer * select_t = new QTimer ( this ) ;
select_t - > setInterval ( 100 ) ;
connect ( select_t , & QTimer : : timeout , [ & ] ( ) {
selected_text = ui - > text - > selectedText ( ) ;
if ( ui - > text - > hasSelectedText ( ) = = true ) {
if ( selected_text_lock = = false ) {
selected_text_lock = true ;
QStringList parts = selected_text . split ( ' ' , QString : : SkipEmptyParts ) ;
for ( int i = 0 ; i < parts . size ( ) ; + + i )
parts [ i ] . replace ( 0 , 1 , parts [ i ] [ 0 ] . toUpper ( ) ) ;
word = parts . join ( " " ) ;
letter = word . left ( 1 ) ;
selected_text_str = word . toStdString ( ) ;
dictionary_lookup ( selected_text_str , letter , dictionary_position ) ;
ui - > wordLabel - > setText ( word ) ;
ui - > definitionLabel - > setText ( definition ) ;
if ( checkconfig_match ( " .config/06-words/config " , selected_text_str ) = = true ) {
ui - > saveWordBtn - > setText ( " " ) ;
ui - > saveWordBtn - > setIcon ( QIcon ( " :/resources/starred_star.png " ) ) ;
}
else {
ui - > saveWordBtn - > setText ( " " ) ;
ui - > saveWordBtn - > setIcon ( QIcon ( " :/resources/star.png " ) ) ;
}
wordwidget_show ( ) ;
}
else {
;
}
}
else {
;
}
} ) ;
select_t - > start ( ) ;
if ( checkconfig ( " /inkbox/skip_opendialog " ) = = true ) {
2021-04-05 12:35:25 -07:00
// We have to get the file's path
if ( checkconfig ( " /tmp/suspendBook " ) = = true ) {
2021-04-06 09:01:04 -07:00
wakeFromSleep = true ;
2021-04-05 12:35:25 -07:00
// Prevent from opening the Reader framework next time unless the condition is reset
string_writeconfig ( " /tmp/suspendBook " , " false " ) ;
2021-04-06 09:01:04 -07:00
book_file = " /inkbox/book/book.txt " ;
2021-03-25 05:00:19 -07:00
}
2021-04-05 12:35:25 -07:00
else {
string_checkconfig ( " /inkbox/book_number " ) ;
if ( checkconfig_str_val = = " 1 " ) {
string_checkconfig ( " .config/08-recent_books/1 " ) ;
book_file = checkconfig_str_val ;
}
if ( checkconfig_str_val = = " 2 " ) {
string_checkconfig ( " .config/08-recent_books/2 " ) ;
book_file = checkconfig_str_val ;
}
if ( checkconfig_str_val = = " 3 " ) {
string_checkconfig ( " .config/08-recent_books/3 " ) ;
book_file = checkconfig_str_val ;
}
if ( checkconfig_str_val = = " 4 " ) {
string_checkconfig ( " .config/08-recent_books/4 " ) ;
book_file = checkconfig_str_val ;
}
2021-03-25 05:00:19 -07:00
}
}
else {
if ( checkconfig ( " /opt/inkbox_genuine " ) = = true ) {
QDir : : setCurrent ( " /mnt/onboard/onboard " ) ;
QFileDialog * dialog = new QFileDialog ( this ) ;
// https://forum.qt.io/topic/29471/solve-how-to-show-qfiledialog-at-center-position-screen/4
QDesktopWidget desk ;
QRect screenres = desk . screenGeometry ( 0 ) ; dialog - > setGeometry ( QRect ( screenres . width ( ) / 4 , screenres . height ( ) / 4 , screenres . width ( ) / 2 , screenres . height ( ) / 2 ) ) ;
stylesheetFile . open ( QFile : : ReadOnly ) ;
dialog - > setStyleSheet ( stylesheetFile . readAll ( ) ) ;
stylesheetFile . close ( ) ;
book_file = dialog - > getOpenFileName ( dialog , tr ( " Open File " ) , QDir : : currentPath ( ) ) ;
2021-04-08 04:47:27 -07:00
if ( book_file ! = " " ) {
QDir : : setCurrent ( " /mnt/onboard/.adds/inkbox " ) ;
}
else {
// User clicked "Cancel" button
QDir : : setCurrent ( " /mnt/onboard/.adds/inkbox " ) ;
quit_restart ( ) ;
}
2021-03-25 05:00:19 -07:00
}
else {
QDir : : setCurrent ( " /mnt/onboard " ) ;
QFileDialog * dialog = new QFileDialog ( this ) ;
// https://forum.qt.io/topic/29471/solve-how-to-show-qfiledialog-at-center-position-screen/4
QDesktopWidget desk ;
QRect screenres = desk . screenGeometry ( 0 ) ; dialog - > setGeometry ( QRect ( screenres . width ( ) / 4 , screenres . height ( ) / 4 , screenres . width ( ) / 2 , screenres . height ( ) / 2 ) ) ;
stylesheetFile . open ( QFile : : ReadOnly ) ;
dialog - > setStyleSheet ( stylesheetFile . readAll ( ) ) ;
stylesheetFile . close ( ) ;
book_file = dialog - > getOpenFileName ( dialog , tr ( " Open File " ) , QDir : : currentPath ( ) ) ;
2021-04-08 04:47:27 -07:00
if ( book_file ! = " " ) {
QDir : : setCurrent ( " /mnt/onboard/.adds/inkbox " ) ;
}
else {
// User clicked "Cancel" button
QDir : : setCurrent ( " /mnt/onboard/.adds/inkbox " ) ;
quit_restart ( ) ;
}
2021-03-25 05:00:19 -07:00
}
}
2021-04-06 10:40:43 -07:00
// Checking if we're waking from sleep; if so, do nothing there because the book should have already been parsed
2021-04-06 09:01:04 -07:00
if ( wakeFromSleep ! = true ) {
// Counting number of parsed files
split_total = setup_book ( book_file , 0 , true ) ;
split_files_number = split_total ;
split_total = split_total - 1 ;
writeconfig_pagenumber ( ) ;
}
else {
// Retrieve split_total from tmpfs
string_checkconfig ( " /tmp/inkboxPageNumber " ) ;
split_total = checkconfig_str_val . toInt ( ) ;
setup_book ( book_file , 0 , true ) ;
}
2021-03-25 05:00:19 -07:00
// Get text
QDir : : setCurrent ( " /mnt/onboard/.adds/inkbox " ) ;
setup_book ( book_file , split_total , false ) ;
// Display text
// Checking saved font size if any
string_checkconfig ( " .config/04-book/size " ) ;
if ( checkconfig_str_val = = " 0 " ) {
checkconfig_str_val = " 6 " ;
ui - > sizeSlider - > setValue ( 0 ) ;
ui - > sizeValueLabel - > setText ( " 1 " ) ;
}
if ( checkconfig_str_val = = " 1 " ) {
checkconfig_str_val = " 10 " ;
ui - > sizeSlider - > setValue ( 1 ) ;
ui - > sizeValueLabel - > setText ( " 2 " ) ;
}
if ( checkconfig_str_val = = " 2 " ) {
checkconfig_str_val = " 14 " ;
ui - > sizeSlider - > setValue ( 2 ) ;
ui - > sizeValueLabel - > setText ( " 3 " ) ;
}
if ( checkconfig_str_val = = " 3 " ) {
checkconfig_str_val = " 18 " ;
ui - > sizeSlider - > setValue ( 3 ) ;
ui - > sizeValueLabel - > setText ( " 4 " ) ;
}
if ( checkconfig_str_val = = " 4 " ) {
checkconfig_str_val = " 22 " ;
ui - > sizeSlider - > setValue ( 4 ) ;
ui - > sizeValueLabel - > setText ( " 5 " ) ;
}
if ( checkconfig_str_val = = " " ) {
checkconfig_str_val = " 10 " ;
ui - > sizeSlider - > setValue ( 1 ) ;
ui - > sizeValueLabel - > setText ( " 2 " ) ;
}
QString font_size = " font-size: " ;
font_size = font_size . append ( checkconfig_str_val ) ;
font_size = font_size . append ( " pt " ) ;
ui - > text - > setStyleSheet ( font_size ) ;
// Wheeee!
ui - > text - > setText ( ittext ) ;
2021-04-06 09:01:04 -07:00
// Clean up
string_writeconfig ( " /inkbox/remount " , " true " ) ;
// Way to tell shell scripts that we're in the Reader framework
string_writeconfig ( " /tmp/inkboxReading " , " true " ) ;
2021-03-25 05:00:19 -07:00
// 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 ;
string str_book_4 = book_4 . toStdString ( ) ;
2021-04-06 10:40:43 -07:00
string book_file_str ;
// 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 ( ) ;
}
else {
book_file_str = book_file . toStdString ( ) ;
string_writeconfig ( " /tmp/inkboxBookPath " , book_file_str ) ;
}
2021-03-25 05:00:19 -07:00
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 ) ;
}
}
reader : : ~ reader ( )
{
delete ui ;
}
void reader : : on_nextBtn_clicked ( )
{
2021-04-05 07:07:21 -07:00
if ( split_total - 1 = = 1 or split_total - 1 = = 0 ) {
2021-03-25 05:00:19 -07:00
QMessageBox : : critical ( this , tr ( " Invalid argument " ) , tr ( " You've reached the end of the document. " ) ) ;
}
else {
2021-03-27 16:08:05 -07:00
parser_ran = true ;
2021-03-25 05:00:19 -07:00
split_total = split_total - 1 ;
2021-04-06 09:01:04 -07:00
2021-03-25 05:00:19 -07:00
setup_book ( book_file , split_total , false ) ;
ui - > text - > setText ( " " ) ;
ui - > text - > setText ( ittext ) ;
2021-03-30 05:24:13 -07:00
pagesTurned = pagesTurned + 1 ;
if ( neverRefresh = = true ) {
// Do nothing; "Never refresh" was set
;
}
else {
if ( pagesTurned > = pageRefreshSetting ) {
// Refreshing the screen
this - > repaint ( ) ;
// Reset count
pagesTurned = 0 ;
}
}
2021-04-06 09:01:04 -07:00
writeconfig_pagenumber ( ) ;
2021-03-25 05:00:19 -07:00
}
}
void reader : : on_previousBtn_clicked ( )
{
// Making sure we won't encounter a "List index out of range" error ;)
2021-03-30 18:26:58 -07:00
if ( split_total > = split_files_number - 1 ) {
2021-03-25 05:00:19 -07:00
QMessageBox : : critical ( this , tr ( " Invalid argument " ) , tr ( " No previous page. " ) ) ;
}
else {
2021-03-27 16:08:05 -07:00
parser_ran = true ;
2021-03-25 05:00:19 -07:00
split_total = split_total + 1 ;
setup_book ( book_file , split_total , false ) ;
ui - > text - > setText ( " " ) ;
ui - > text - > setText ( ittext ) ;
2021-03-30 05:24:13 -07:00
// We always increment pagesTurned regardless if we press the Previous or Next button
pagesTurned = pagesTurned + 1 ;
if ( neverRefresh = = true ) {
// Do nothing; "Never refresh" was set
;
}
else {
if ( pagesTurned > = pageRefreshSetting ) {
// Refreshing the screen
this - > repaint ( ) ;
// Reset count
pagesTurned = 0 ;
}
}
2021-04-06 09:01:04 -07:00
writeconfig_pagenumber ( ) ;
2021-03-25 05:00:19 -07:00
}
}
void reader : : on_optionsBtn_clicked ( )
{
menubar_show ( ) ;
2021-03-30 05:24:13 -07:00
this - > repaint ( ) ;
2021-03-25 05:00:19 -07:00
}
void reader : : on_hideOptionsBtn_clicked ( )
{
menubar_hide ( ) ;
this - > repaint ( ) ;
}
void reader : : on_brightnessDecBtn_clicked ( )
{
int bval = get_brightness ( ) ;
int set_bval = bval - 1 ;
set_brightness ( set_bval ) ;
brightness_writeconfig ( set_bval ) ;
bval = get_brightness ( ) ;
ui - > brightnessStatus - > setValue ( bval ) ;
}
void reader : : on_brightnessIncBtn_clicked ( )
{
int bval = get_brightness ( ) ;
int set_bval = bval + 1 ;
set_brightness ( set_bval ) ;
brightness_writeconfig ( set_bval ) ;
bval = get_brightness ( ) ;
ui - > brightnessStatus - > setValue ( bval ) ;
}
void reader : : on_aboutBtn_clicked ( )
{
if ( checkconfig ( " /opt/inkbox_genuine " ) = = true ) {
QString aboutmsg = " InkBox is an open-source Qt-based eBook reader. It brings you the latest Qt features while being also fast and responsive. " ;
string_checkconfig_ro ( " /external_root/opt/isa/version " ) ;
2021-04-06 10:40:43 -07:00
aboutmsg . append ( " \n \n InkBox " ) ;
2021-03-25 05:00:19 -07:00
aboutmsg . append ( checkconfig_str_val ) ;
QMessageBox : : information ( this , tr ( " Information " ) , aboutmsg ) ;
}
else {
QMessageBox : : information ( this , tr ( " About " ) , tr ( " InkBox is an open-source Qt-based eBook reader. It brings you the latest Qt features while being also fast and responsive. " ) ) ;
}
}
void reader : : on_homeBtn_clicked ( )
{
2021-04-06 09:01:04 -07:00
// We're leaving reading mode
string_writeconfig ( " /tmp/inkboxReading " , " false " ) ;
// Relaunching process
2021-04-08 04:47:27 -07:00
quit_restart ( ) ;
2021-03-25 05:00:19 -07:00
}
void reader : : on_fontChooser_currentIndexChanged ( const QString & arg1 )
{
if ( arg1 = = " Roboto " ) {
QFont roboto ( " Roboto " ) ;
ui - > text - > setFont ( roboto ) ;
string_writeconfig ( " .config/04-book/font " , " Roboto " ) ;
}
if ( arg1 = = " Inter " ) {
QFont inter ( " Inter " ) ;
ui - > text - > setFont ( inter ) ;
string_writeconfig ( " .config/04-book/font " , " Inter " ) ;
}
if ( arg1 = = " Source Serif Pro " ) {
QFont sourceserif ( " Source Serif Pro " ) ;
ui - > text - > setFont ( sourceserif ) ;
string_writeconfig ( " .config/04-book/font " , " Source Serif Pro " ) ;
}
if ( arg1 = = " Libre Baskerville " ) {
QFont librebaskerville ( " Libre Baskerville " ) ;
ui - > text - > setFont ( librebaskerville ) ;
string_writeconfig ( " .config/04-book/font " , " Libre Baskerville " ) ;
}
if ( arg1 = = " Noto Mono " ) {
QFont notomono ( " Noto Mono " ) ;
ui - > text - > setFont ( notomono ) ;
string_writeconfig ( " .config/04-book/font " , " Noto Mono " ) ;
}
if ( arg1 = = " Libertinus Serif " ) {
QFont libertinus ( " Libertinus Serif " ) ;
ui - > text - > setFont ( libertinus ) ;
string_writeconfig ( " .config/04-book/font " , " Libertinus Serif " ) ;
}
2021-03-29 18:46:53 -07:00
if ( arg1 = = " Crimson Pro " ) {
int id = QFontDatabase : : addApplicationFont ( " :/resources/fonts/CrimsonPro-Regular.ttf " ) ;
QString family = QFontDatabase : : applicationFontFamilies ( id ) . at ( 0 ) ;
QFont crimson ( family ) ;
ui - > text - > setFont ( crimson ) ;
string_writeconfig ( " .config/04-book/font " , " Crimson Pro " ) ;
}
2021-03-25 05:00:19 -07:00
}
void reader : : on_alignLeftBtn_clicked ( )
{
ui - > text - > setAlignment ( Qt : : AlignLeft ) ;
string_writeconfig ( " .config/04-book/alignment " , " Left " ) ;
}
void reader : : on_alignCenterBtn_clicked ( )
{
ui - > text - > setAlignment ( Qt : : AlignHCenter ) ;
string_writeconfig ( " .config/04-book/alignment " , " Center " ) ;
}
void reader : : on_alignRightBtn_clicked ( )
{
ui - > text - > setAlignment ( Qt : : AlignRight ) ;
string_writeconfig ( " .config/04-book/alignment " , " Right " ) ;
}
void reader : : on_alignJustifyBtn_clicked ( )
{
ui - > text - > setAlignment ( Qt : : AlignJustify ) ;
string_writeconfig ( " .config/04-book/alignment " , " Justify " ) ;
}
void reader : : menubar_show ( ) {
// Checking battery level and status, then displaying the relevant icon on batteryIconLabel
string_checkconfig_ro ( " /sys/devices/platform/pmic_battery.1/power_supply/mc13892_bat/status " ) ;
if ( checkconfig_str_val = = " Charging \n " ) {
ui - > batteryIconLabel - > setPixmap ( scaledChargingPixmap ) ;
}
else {
get_battery_level ( ) ;
if ( batt_level_int > = 75 & & batt_level_int < = 100 ) {
ui - > batteryIconLabel - > setPixmap ( scaledFullPixmap ) ;
}
if ( batt_level_int > = 25 & & batt_level_int < = 74 ) {
ui - > batteryIconLabel - > setPixmap ( scaledHalfPixmap ) ;
}
if ( batt_level_int > = 0 & & batt_level_int < = 24 ) {
ui - > batteryIconLabel - > setPixmap ( scaledEmptyPixmap ) ;
}
}
ui - > hideOptionsBtn - > show ( ) ;
ui - > optionsBtn - > hide ( ) ;
2021-03-27 16:08:05 -07:00
ui - > menuWidget - > setVisible ( true ) ;
2021-03-27 06:39:58 -07:00
ui - > menuBarWidget - > setVisible ( true ) ;
ui - > statusBarWidget - > setVisible ( true ) ;
2021-03-26 21:10:49 -07:00
string_checkconfig ( " /opt/inkbox_device " ) ;
2021-04-09 17:54:20 -07:00
if ( checkconfig_str_val = = " n705 \n " or checkconfig_str_val = = " n905 \n " ) {
2021-03-26 21:10:49 -07:00
;
}
else {
2021-03-27 06:39:58 -07:00
ui - > brightnessWidget - > setVisible ( true ) ;
2021-03-26 21:10:49 -07:00
}
2021-03-27 16:08:05 -07:00
if ( checkconfig ( " .config/11-menubar/sticky " ) = = true ) {
ui - > spacerWidget - > setVisible ( false ) ;
}
else {
// Safety measure
ui - > spacerWidget - > setVisible ( false ) ;
}
2021-03-26 21:10:49 -07:00
2021-03-25 05:00:19 -07:00
menubar_shown = true ;
}
void reader : : menubar_hide ( ) {
2021-03-26 21:10:49 -07:00
string_checkconfig ( " /opt/inkbox_device " ) ;
2021-04-09 17:54:20 -07:00
if ( checkconfig_str_val = = " n705 \n " or checkconfig_str_val = = " n905 \n " ) {
2021-03-27 16:08:05 -07:00
ui - > brightnessWidget - > setVisible ( false ) ;
2021-03-26 21:10:49 -07:00
}
else {
2021-03-27 16:08:05 -07:00
// Safety measure
2021-03-27 06:39:58 -07:00
ui - > brightnessWidget - > setVisible ( false ) ;
2021-03-26 21:10:49 -07:00
}
2021-03-25 05:00:19 -07:00
ui - > hideOptionsBtn - > hide ( ) ;
ui - > optionsBtn - > show ( ) ;
2021-03-27 06:39:58 -07:00
ui - > menuBarWidget - > setVisible ( false ) ;
2021-03-26 21:10:49 -07:00
if ( checkconfig ( " .config/11-menubar/sticky " ) = = true ) {
2021-03-27 06:39:58 -07:00
ui - > spacerWidget - > setVisible ( true ) ;
ui - > statusBarWidget - > setVisible ( true ) ;
2021-03-26 21:10:49 -07:00
}
else {
2021-03-27 06:39:58 -07:00
ui - > spacerWidget - > setVisible ( false ) ;
ui - > statusBarWidget - > setVisible ( false ) ;
2021-03-28 12:49:56 -07:00
ui - > menuWidget - > setVisible ( false ) ;
2021-03-26 21:10:49 -07:00
}
2021-03-25 05:00:19 -07:00
menubar_shown = false ;
}
void reader : : wordwidget_show ( ) {
if ( menubar_shown = = true ) {
menubar_hide ( ) ;
ui - > hideOptionsBtn - > hide ( ) ;
2021-03-27 06:39:58 -07:00
ui - > optionsBtn - > hide ( ) ;
ui - > line - > hide ( ) ;
ui - > wordWidget - > setVisible ( true ) ;
2021-03-25 05:00:19 -07:00
}
else {
ui - > hideOptionsBtn - > hide ( ) ;
2021-03-27 06:39:58 -07:00
ui - > optionsBtn - > hide ( ) ;
ui - > line - > hide ( ) ;
ui - > wordWidget - > setVisible ( true ) ;
2021-03-25 05:00:19 -07:00
}
}
void reader : : wordwidget_hide ( ) {
2021-03-27 06:39:58 -07:00
ui - > wordWidget - > setVisible ( false ) ;
ui - > hideOptionsBtn - > hide ( ) ;
ui - > optionsBtn - > show ( ) ;
ui - > line - > show ( ) ;
2021-03-25 05:00:19 -07:00
selected_text_lock = false ;
}
void reader : : on_infoCloseBtn_clicked ( )
{
wordwidget_hide ( ) ;
dictionary_position = 1 ;
QString dictionary_position_str = QString : : number ( dictionary_position ) ;
ui - > definitionStatusLabel - > setText ( dictionary_position_str ) ;
}
void reader : : on_previousDefinitionBtn_clicked ( )
{
dictionary_position = dictionary_position - 1 ;
if ( dictionary_position < = 0 ) {
dictionary_position = 1 ;
}
else {
dictionary_lookup ( selected_text_str , letter , dictionary_position ) ;
ui - > definitionLabel - > setText ( definition ) ;
QString dictionary_position_str = QString : : number ( dictionary_position ) ;
ui - > definitionStatusLabel - > setText ( dictionary_position_str ) ;
}
}
void reader : : on_nextDefinitionBtn_clicked ( )
{
dictionary_position = dictionary_position + 1 ;
dictionary_lookup ( selected_text_str , letter , dictionary_position ) ;
if ( nextdefinition_lock = = true ) {
dictionary_position = dictionary_position - 1 ;
}
else {
ui - > definitionLabel - > setText ( definition ) ;
QString dictionary_position_str = QString : : number ( dictionary_position ) ;
ui - > definitionStatusLabel - > setText ( dictionary_position_str ) ;
}
}
void reader : : on_saveWordBtn_clicked ( )
{
if ( checkconfig_match ( " .config/06-words/config " , selected_text_str ) = = true ) {
checkwords ( ) ;
word = word . append ( " \n " ) ;
words = words . replace ( word , " " ) ;
string words_std_string = words . toStdString ( ) ;
save_word ( words_std_string , true ) ;
ui - > saveWordBtn - > setText ( " " ) ;
ui - > saveWordBtn - > setIcon ( QIcon ( " :/resources/star.png " ) ) ;
}
else {
save_word ( selected_text_str , false ) ;
ui - > saveWordBtn - > setText ( " " ) ;
ui - > saveWordBtn - > setIcon ( QIcon ( " :/resources/starred_star.png " ) ) ;
}
}
void reader : : on_sizeSlider_valueChanged ( int value )
{
// Font size
string value_str = to_string ( value ) ;
string_writeconfig ( " .config/04-book/size " , value_str ) ;
// Future improvement?
if ( checkconfig_match ( " /opt/inkbox_device " , " n705 \n " ) = = true ) {
if ( value = = 0 ) {
ui - > text - > setStyleSheet ( " font-size: 6pt " ) ;
ui - > sizeValueLabel - > setText ( " 1 " ) ;
}
if ( value = = 1 ) {
ui - > text - > setStyleSheet ( " font-size: 10pt " ) ;
ui - > sizeValueLabel - > setText ( " 2 " ) ;
}
if ( value = = 2 ) {
ui - > text - > setStyleSheet ( " font-size: 14pt " ) ;
ui - > sizeValueLabel - > setText ( " 3 " ) ;
}
if ( value = = 3 ) {
ui - > text - > setStyleSheet ( " font-size: 18pt " ) ;
ui - > sizeValueLabel - > setText ( " 4 " ) ;
}
if ( value = = 4 ) {
ui - > text - > setStyleSheet ( " font-size: 22pt " ) ;
ui - > sizeValueLabel - > setText ( " 5 " ) ;
}
}
2021-04-09 17:54:20 -07:00
if ( checkconfig_match ( " /opt/inkbox_device " , " n905 \n " ) = = true ) {
if ( value = = 0 ) {
ui - > text - > setStyleSheet ( " font-size: 6pt " ) ;
ui - > sizeValueLabel - > setText ( " 1 " ) ;
}
if ( value = = 1 ) {
ui - > text - > setStyleSheet ( " font-size: 10pt " ) ;
ui - > sizeValueLabel - > setText ( " 2 " ) ;
}
if ( value = = 2 ) {
ui - > text - > setStyleSheet ( " font-size: 14pt " ) ;
ui - > sizeValueLabel - > setText ( " 3 " ) ;
}
if ( value = = 3 ) {
ui - > text - > setStyleSheet ( " font-size: 18pt " ) ;
ui - > sizeValueLabel - > setText ( " 4 " ) ;
}
if ( value = = 4 ) {
ui - > text - > setStyleSheet ( " font-size: 22pt " ) ;
ui - > sizeValueLabel - > setText ( " 5 " ) ;
}
}
2021-03-25 05:00:19 -07:00
else {
if ( value = = 0 ) {
ui - > text - > setStyleSheet ( " font-size: 6pt " ) ;
ui - > sizeValueLabel - > setText ( " 1 " ) ;
}
if ( value = = 1 ) {
ui - > text - > setStyleSheet ( " font-size: 10pt " ) ;
ui - > sizeValueLabel - > setText ( " 2 " ) ;
}
if ( value = = 2 ) {
ui - > text - > setStyleSheet ( " font-size: 14pt " ) ;
ui - > sizeValueLabel - > setText ( " 3 " ) ;
}
if ( value = = 3 ) {
ui - > text - > setStyleSheet ( " font-size: 18pt " ) ;
ui - > sizeValueLabel - > setText ( " 4 " ) ;
}
if ( value = = 4 ) {
ui - > text - > setStyleSheet ( " font-size: 22pt " ) ;
ui - > sizeValueLabel - > setText ( " 5 " ) ;
}
}
}
2021-04-06 09:01:04 -07:00
void reader : : writeconfig_pagenumber ( ) {
// Saving the page number in tmpfs
string split_total_str = to_string ( split_total ) ;
string_writeconfig ( " /tmp/inkboxPageNumber " , split_total_str ) ;
}
2021-04-08 04:47:27 -07:00
void reader : : quit_restart ( ) {
// Restarting InkBox
QProcess process ;
process . startDetached ( " inkbox " , QStringList ( ) ) ;
qApp - > quit ( ) ;
}