Local library: Basic list working

This commit is contained in:
Nicolas Mailloux 2022-06-23 15:34:40 -04:00
parent 97bc34530c
commit 7c79bd4843
8 changed files with 187 additions and 11 deletions

View file

@ -40,6 +40,7 @@ SOURCES += \
main.cpp \
mainwindow.cpp \
otamanager.cpp \
qclickablelabel.cpp \
quit.cpp \
reader.cpp \
savedwords.cpp \
@ -71,6 +72,7 @@ HEADERS += \
locallibrarywidget.h \
mainwindow.h \
otamanager.h \
qclickablelabel.h \
quit.h \
reader.h \
savedwords.h \

View file

@ -1,14 +1,91 @@
#include "locallibrarywidget.h"
#include "ui_locallibrarywidget.h"
#include <QHBoxLayout>
#include <QSpacerItem>
#include <QScreen>
localLibraryWidget::localLibraryWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::localLibraryWidget)
{
ui->setupUi(this);
this->setFont(QFont("u001"));
/*for(int i = 7; i <= 9; i++) {
bookBtnArray[i]->deleteLater();
bookIconArray[i]->deleteLater();
}*/
//bookBtnArray[7]->deleteLater();
if(global::deviceID == "n705\n" or global::deviceID == "n905\n") {
buttonsNumber = 4;
}
else if(global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n306\n") {
buttonsNumber = 5;
}
else if(global::deviceID == "n437\n" or global::deviceID == "n873\n") {
buttonsNumber = 5;
}
else {
buttonsNumber = 3;
}
// Getting the screen's size
sW = QGuiApplication::screens()[0]->size().width();
sH = QGuiApplication::screens()[0]->size().height();
// Defining what the default icon size will be
if(global::deviceID == "n705\n") {
stdIconWidth = sW / 16;
stdIconHeight = sH / 16;
}
else if(global::deviceID == "n905\n" or global::deviceID == "kt\n") {
stdIconWidth = sW / 18;
stdIconHeight = sH / 18;
}
else if(global::deviceID == "n613\n" or global::deviceID == "n236\n" or global::deviceID == "n437\n" or global::deviceID == "n306\n" or global::deviceID == "emu\n") {
stdIconWidth = sW / 16.5;
stdIconHeight = sH / 16.5;
}
else {
stdIconWidth = sW / 18;
stdIconHeight = sH / 18;
}
for(int i = 1; i <= buttonsNumber; i++) {
// Horizontal layout that will contain the book button and its icon
QHBoxLayout * horizontalLayout = new QHBoxLayout(this);
// Book icon
bookIconArray[i] = new QLabel(this);
// Book button
bookBtnArray[i] = new QClickableLabel(this);
bookBtnArray[i]->setProperty("type", "borderless");
bookIconArray[i]->setStyleSheet("padding: 20px");
bookBtnArray[i]->setFont(QFont("u001"));
// Spacer
QSpacerItem * horizontalSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding);
horizontalLayout->addWidget(bookIconArray[i]);
horizontalLayout->addWidget(bookBtnArray[i]);
horizontalLayout->addSpacerItem(horizontalSpacer);
ui->booksVerticalLayout->addLayout(horizontalLayout);
}
setupBooksList();
}
localLibraryWidget::~localLibraryWidget()
{
delete ui;
}
void localLibraryWidget::setupBooksList() {
for(int i = 1; i <= buttonsNumber; i++) {
QPixmap pixmap(":/resources/starred_star.png");
bookIconArray[i]->setPixmap(pixmap.scaled(stdIconWidth, stdIconHeight));
bookBtnArray[i]->setText("<b>Book " + QString::number(i) + "</b><br>Description");
}
}

View file

@ -2,6 +2,10 @@
#define LOCALLIBRARYWIDGET_H
#include <QWidget>
#include <QLabel>
#include "functions.h"
#include "qclickablelabel.h"
namespace Ui {
class localLibraryWidget;
@ -12,11 +16,22 @@ class localLibraryWidget : public QWidget
Q_OBJECT
public:
QString className = this->metaObject()->className();
explicit localLibraryWidget(QWidget *parent = nullptr);
~localLibraryWidget();
int buttonsNumber;
int sW;
int sH;
int stdIconWidth;
int stdIconHeight;
private slots:
void setupBooksList();
private:
Ui::localLibraryWidget * ui;
QLabel * bookIconArray[10];
QClickableLabel * bookBtnArray[10];
};
#endif // LOCALLIBRARYWIDGET_H

View file

@ -10,19 +10,40 @@
<height>300</height>
</rect>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</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>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="pushButton">
<widget class="QLabel" name="localLibraryLabel">
<property name="text">
<string>Hello</string>
<string>&lt;b&gt;Local library&lt;/b&gt;</string>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="booksVerticalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
</layout>
</item>
</layout>

View file

@ -998,5 +998,6 @@ void MainWindow::resetWifiIconClickedWhileReconnecting() {
void MainWindow::setupLocalLibraryWidget() {
localLibraryWidgetWindow = new localLibraryWidget();
libraryWidgetWindow->setAttribute(Qt::WA_DeleteOnClose);
ui->stackedWidget->insertWidget(1, localLibraryWidgetWindow);
ui->homeStackedWidget->insertWidget(1, localLibraryWidgetWindow);
ui->homeStackedWidget->setCurrentIndex(1);
}

View file

@ -191,6 +191,18 @@
</property>
<widget class="QWidget" name="page">
<layout class="QVBoxLayout" name="verticalLayout_2">
<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>
<layout class="QGridLayout" name="gridLayout_3">
<item row="5" column="0">
@ -359,7 +371,20 @@
</layout>
</widget>
<widget class="QWidget" name="page_6">
<layout class="QVBoxLayout" name="verticalLayout_7"/>
<layout class="QVBoxLayout" name="verticalLayout_7">
<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>
</layout>
</widget>
</widget>
</item>

12
qclickablelabel.cpp Normal file
View file

@ -0,0 +1,12 @@
#include "qclickablelabel.h"
QClickableLabel::QClickableLabel(QWidget* parent, Qt::WindowFlags f)
: QLabel(parent) {
}
QClickableLabel::~QClickableLabel() {}
void QClickableLabel::mousePressEvent(QMouseEvent* event) {
emit clicked();
}

23
qclickablelabel.h Normal file
View file

@ -0,0 +1,23 @@
#ifndef QCLICKABLELABEL_H
#define QCLICKABLELABEL_H
#include <QLabel>
#include <QWidget>
#include <Qt>
class QClickableLabel : public QLabel {
Q_OBJECT
public:
explicit QClickableLabel(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());
~QClickableLabel();
signals:
void clicked();
protected:
void mousePressEvent(QMouseEvent* event);
};
#endif // CLICKABLELABEL_H