From 3f5c60f051a5c7bdbb9c4c6ab10c6b192649e426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lie=20DELHAIE?= Date: Sun, 12 Apr 2026 15:08:28 +0200 Subject: [PATCH] fixes linux --- ToDo.pro | 20 ++++- src/gui/dialog/about/aboutdialog.cpp | 15 ++++ src/gui/dialog/about/aboutdialog.h | 22 +++++ src/gui/dialog/about/aboutdialog.ui | 121 +++++++++++++++++++++++++++ src/gui/dialog/input/inputdialog.ui | 10 ++- src/gui/mainwindow.cpp | 19 +++++ src/gui/mainwindow.h | 2 + src/gui/mainwindow.ui | 104 +++++++++++++++++++++-- src/icon.png | Bin 0 -> 31448 bytes src/resources.qrc | 5 ++ 10 files changed, 309 insertions(+), 9 deletions(-) create mode 100644 src/gui/dialog/about/aboutdialog.cpp create mode 100644 src/gui/dialog/about/aboutdialog.h create mode 100644 src/gui/dialog/about/aboutdialog.ui create mode 100644 src/icon.png create mode 100644 src/resources.qrc diff --git a/ToDo.pro b/ToDo.pro index d2fa5dc..f8d3110 100644 --- a/ToDo.pro +++ b/ToDo.pro @@ -8,6 +8,9 @@ QMAKE_CXXFLAGS += -Werror win32:VERSION = 0.0.1.0 # major.minor.patch.build else:VERSION = 0.0.1 # major.minor.patch +DEFINES += APP_VERSION=\"\\\"$${VERSION}.preview1\\\"\" +TMP_APP_ARCH = APP_ARCH=\"\\\"unknown\\\"\" + # remove possible other optimization flags win32 { message("Build for Windows") @@ -16,10 +19,12 @@ win32 { QMAKE_CXXFLAGS_RELEASE *= -O2 equals(QMAKE_TARGET.arch, arm64) { message("CPU Architecture : aarch64") + TMP_APP_ARCH = APP_ARCH=\"\\\"arm64\\\"\" } equals(QMAKE_TARGET.arch, x86_64) { message("CPU Architecture : x64") QMAKE_CXXFLAGS_RELEASE += -favor:INTEL64 + TMP_APP_ARCH = APP_ARCH=\"\\\"x64\\\"\" } RC_ICONS = icon.ico QMAKE_TARGET_COMPANY = "Aurelie Delhaie" @@ -37,28 +42,34 @@ macx { QMAKE_CXXFLAGS_RELEASE *= -O3 QMAKE_APPLE_DEVICE_ARCHS = arm64 QMAKE_CXXFLAGS_RELEASE += -march=armv8.6-a+fp16+simd + TMP_APP_ARCH = APP_ARCH=\"\\\"arm64\\\"\" } linux-* { message("Build for Linux") - equals(ARCH, aarch64) { + equals(QMAKE_HOST.arch, aarch64) { message("CPU Architecture : aarch64") QMAKE_CXXFLAGS_RELEASE += -mtune=armv8.6-a+fp16+simd + TMP_APP_ARCH = APP_ARCH=\"\\\"aarch64\\\"\" } - equals(ARCH, amd64) { + equals(QMAKE_HOST.arch, amd64) { message("CPU Architecture : amd64") QMAKE_CXXFLAGS_RELEASE += -march=tigerlake QMAKE_CXXFLAGS_RELEASE += -mtune=intel + TMP_APP_ARCH = APP_ARCH=\"\\\"amd64\\\"\" } QMAKE_CXXFLAGS_RELEASE *= -O3 } +DEFINES += $$TMP_APP_ARCH + # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ src/core/noteservice.cpp \ + src/gui/dialog/about/aboutdialog.cpp \ src/gui/dialog/input/inputdialog.cpp \ src/obj/list.cpp \ src/core/listservice.cpp \ @@ -68,6 +79,7 @@ SOURCES += \ HEADERS += \ src/core/noteservice.h \ + src/gui/dialog/about/aboutdialog.h \ src/gui/dialog/input/inputdialog.h \ src/obj/list.h \ src/core/listservice.h \ @@ -75,6 +87,7 @@ HEADERS += \ src/obj/note.h FORMS += \ + src/gui/dialog/about/aboutdialog.ui \ src/gui/dialog/input/inputdialog.ui \ src/gui/mainwindow.ui @@ -87,3 +100,6 @@ CONFIG += embed_translations qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target + +RESOURCES += \ + src/resources.qrc diff --git a/src/gui/dialog/about/aboutdialog.cpp b/src/gui/dialog/about/aboutdialog.cpp new file mode 100644 index 0000000..dd3755f --- /dev/null +++ b/src/gui/dialog/about/aboutdialog.cpp @@ -0,0 +1,15 @@ +#include "aboutdialog.h" +#include "ui_aboutdialog.h" + +AboutDialog::AboutDialog(QWidget *parent) + : QDialog(parent) + , ui(new Ui::AboutDialog) +{ + ui->setupUi(this); + ui->versionLabel->setText(QString("%1-%2").arg(APP_VERSION, APP_ARCH)); +} + +AboutDialog::~AboutDialog() +{ + delete ui; +} diff --git a/src/gui/dialog/about/aboutdialog.h b/src/gui/dialog/about/aboutdialog.h new file mode 100644 index 0000000..4474ece --- /dev/null +++ b/src/gui/dialog/about/aboutdialog.h @@ -0,0 +1,22 @@ +#ifndef ABOUTDIALOG_H +#define ABOUTDIALOG_H + +#include + +namespace Ui { +class AboutDialog; +} + +class AboutDialog : public QDialog +{ + Q_OBJECT + +public: + explicit AboutDialog(QWidget *parent = nullptr); + ~AboutDialog(); + +private: + Ui::AboutDialog *ui; +}; + +#endif // ABOUTDIALOG_H diff --git a/src/gui/dialog/about/aboutdialog.ui b/src/gui/dialog/about/aboutdialog.ui new file mode 100644 index 0000000..890b32e --- /dev/null +++ b/src/gui/dialog/about/aboutdialog.ui @@ -0,0 +1,121 @@ + + + AboutDialog + + + Qt::WindowModality::WindowModal + + + + 0 + 0 + 258 + 183 + + + + + 258 + 183 + + + + + 258 + 183 + + + + Qt::ContextMenuPolicy::NoContextMenu + + + About ToDo + + + + :/images/icon.png:/images/icon.png + + + true + + + + + + + + + + + 64 + 64 + + + + + 64 + 64 + + + + + + + :/images/icon.png + + + true + + + Qt::AlignmentFlag::AlignCenter + + + + + + + + + font-weight: 200; +font-size: 36px; + + + ToDo + + + Qt::AlignmentFlag::AlignCenter + + + + + + + 0.0.0-dev + + + Qt::AlignmentFlag::AlignCenter + + + + + + + Qt::Orientation::Vertical + + + + 20 + 40 + + + + + + + + + + + + + diff --git a/src/gui/dialog/input/inputdialog.ui b/src/gui/dialog/input/inputdialog.ui index 82dcc77..dd1db82 100644 --- a/src/gui/dialog/input/inputdialog.ui +++ b/src/gui/dialog/input/inputdialog.ui @@ -3,7 +3,7 @@ InputDialog - Qt::WindowModality::ApplicationModal + Qt::WindowModality::WindowModal @@ -28,6 +28,10 @@ Dialog + + + :/images/icon.png:/images/icon.png + background-color: rgb(249, 255, 251); @@ -191,6 +195,8 @@ QPushButton::pressed { - + + + diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index a3f77b4..a0f7e98 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -2,6 +2,7 @@ #include "ui_mainwindow.h" #include "src/gui/dialog/input/inputdialog.h" +#include "src/gui/dialog/about/aboutdialog.h" #include "src/core/listservice.h" #include "src/core/noteservice.h" @@ -16,6 +17,8 @@ MainWindow::MainWindow(QWidget *parent) { ui->setupUi(this); + ui->version->setText(QString("%1").arg(APP_VERSION)); + /* * Events */ @@ -28,6 +31,11 @@ MainWindow::MainWindow(QWidget *parent) connect(ui->saveNoteButton, &QPushButton::clicked, this, &MainWindow::onSaveNoteButtonClicked); connect(ui->notes, &QListWidget::itemChanged, this, &MainWindow::onNoteChanged); + // action menu + connect(ui->actionNew_list, &QAction::triggered, this, &MainWindow::openCreateListDialog); + connect(ui->actionAbout, &QAction::triggered, this, &MainWindow::openAboutDialog); + connect(ui->actionClose, &QAction::triggered, this, &MainWindow::quit); + // services connect(ListService::getInstance(), &ListService::onListCreated, this, &MainWindow::onListCreated); connect(ListService::getInstance(), &ListService::onListUpdated, this, &MainWindow::onListUpdate); @@ -59,6 +67,12 @@ void MainWindow::openCreateListDialog(bool) ListService::getInstance()->create(newListName); } +void MainWindow::openAboutDialog() +{ + AboutDialog d(this); + d.exec(); +} + void MainWindow::onListCreated(List value) { QListWidgetItem* item = new QListWidgetItem(); @@ -307,6 +321,11 @@ void MainWindow::onListContextMenuRename(bool) } } +void MainWindow::quit() +{ + QApplication::closeAllWindows(); +} + inline void MainWindow::preload() { QList lists = ListService::getInstance()->getAll(); diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 64655ab..ba04e88 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -23,6 +23,7 @@ public: private slots: void openCreateListDialog(bool); + void openAboutDialog(); void onListCreated(List value); void onListUpdate(List value); void onListDeleted(QUuid uuid); @@ -36,6 +37,7 @@ private slots: void onListRightClick(const QPoint &pos); void onListContextMenuDelete(bool); void onListContextMenuRename(bool); + void quit(); private: Ui::MainWindow *ui; diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index a625a84..e55933c 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -19,6 +19,10 @@ ToDo + + + :/images/icon.png:/images/icon.png + @@ -75,14 +79,16 @@ 28 - DemiBold + ExtraLight background-color: rgb(119, 167, 92); +color: rgb(249, 255, 251); border: none; padding-left: 2px; -border-bottom: 2px solid rgb(242, 242, 242) +border-bottom: 2px solid rgb(242, 242, 242); +font-weight: 200; 0 @@ -207,13 +213,32 @@ QListView::item:hover { 0 + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Minimum + + + + 6 + 20 + + + + false + + color: rgb(74, 104, 57); + - 0.0.1 + 0.0.0-dev @@ -368,7 +393,7 @@ padding: 8px; - + false @@ -399,7 +424,76 @@ padding: 8px; + + + + 0 + 0 + 1032 + 24 + + + + background-color: rgb(119, 167, 92); +color: rgb(249, 255, 251); +font-weight: 200; + + + + Help + + + + + + File + + + + + + + + + + + + + + About + + + QAction::MenuRole::AboutRole + + + + + + + + New list... + + + Ctrl+N + + + + + + + + Close + + + Ctrl+Q + + + QAction::MenuRole::QuitRole + + - + + + diff --git a/src/icon.png b/src/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..843a2357cfc89fe5185534297f6c6e7496b066fc GIT binary patch literal 31448 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≻EC@GsRL#^-E`nMq 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 BbO`_e literal 0 HcmV?d00001 diff --git a/src/resources.qrc b/src/resources.qrc new file mode 100644 index 0000000..ff6f51a --- /dev/null +++ b/src/resources.qrc @@ -0,0 +1,5 @@ + + + icon.png + +