From 5b271ab623f33c254643efc42a0fcdc69819e4a6 Mon Sep 17 00:00:00 2001 From: talksik Date: Tue, 27 Jan 2026 17:04:05 -0800 Subject: [PATCH] chore: add boilerplate for a settings dialog --- CMakeLists.txt | 1 + CMakeLists.txt.user | 23 +++++- src/MainWindow.cpp | 28 ++++++- src/MainWindow.h | 13 +++- src/mainwindow.ui | 166 +++++++++++++++++++++++++++++------------ src/settingsdialog.cpp | 24 ++++++ src/settingsdialog.h | 29 +++++++ src/settingsdialog.ui | 77 +++++++++++++++++++ 8 files changed, 307 insertions(+), 54 deletions(-) create mode 100644 src/settingsdialog.cpp create mode 100644 src/settingsdialog.h create mode 100644 src/settingsdialog.ui diff --git a/CMakeLists.txt b/CMakeLists.txt index 74d571b..033fbc2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,7 @@ qt_add_executable(llink src/networkmanager.cpp src/authdialog.ui src/authdialog.cpp + src/settingsdialog.h src/settingsdialog.cpp src/settingsdialog.ui ) qt_add_resources(llink diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index ca8dec4..ae6138b 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -447,7 +447,26 @@ true /Users/talksik/Documents/code/llink/build/Qt_6_8_6_for_macOS-Debug/llink.app/Contents/MacOS - 1 + + true + true + 0 + true + + 2 + + false + -e cpu-cycles --call-graph dwarf,4096 -F 250 + testauthmanager + CMakeProjectManager.CMakeRunConfiguration. + testauthmanager + false + true + true + true + /Users/talksik/Documents/code/llink/build/Qt_6_8_6_for_macOS-Debug/tests + + 2 diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index dcaac20..3a4a961 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -3,21 +3,29 @@ // #include "MainWindow.h" +#include "authdialog.h" +#include "authmanager.h" +#include "settingsdialog.h" #include "ui_mainwindow.h" #include #include #include #include -#include "authmanager.h" -#include "authdialog.h" +#include MainWindow::MainWindow(QWidget *parent) - : QMainWindow(parent), m_trayIcon(nullptr), m_authManager(new AuthManager(this)), m_authDialog(nullptr) + : QMainWindow(parent), m_trayIcon(nullptr), m_authManager(new AuthManager(this)), m_settingsDialog(nullptr), + m_authDialog(nullptr) { m_authDialog = new AuthDialog(m_authManager, this); ui = new Ui::MainWindow; ui->setupUi(this); + this->setWindowFlags(Qt::FramelessWindowHint); + + ui->splitter->setStretchFactor(0, 1); + ui->splitter->setStretchFactor(1, 1); + ui->splitter->setStretchFactor(2, 2); m_authDialog->setModal(true); @@ -73,3 +81,17 @@ MainWindow::~MainWindow() { delete ui; } + +void MainWindow::on_exitButton_clicked() +{ + qApp->exit(0); +} + +void MainWindow::on_settingsButton_clicked() +{ + if (!m_settingsDialog) + { + m_settingsDialog = new SettingsDialog(m_authManager, this); + } + m_settingsDialog->show(); +} diff --git a/src/MainWindow.h b/src/MainWindow.h index 21a9ad6..dc9de73 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -10,9 +10,11 @@ QT_BEGIN_NAMESPACE class QSystemTrayIcon; class AuthManager; -class AuthDialog; QT_END_NAMESPACE +class AuthDialog; +class SettingsDialog; + namespace Ui { class MainWindow; } @@ -26,7 +28,12 @@ public: ~MainWindow(); -private: + private slots: + void on_exitButton_clicked(); + + void on_settingsButton_clicked(); + + private: void setupTrayIcon(); QSystemTrayIcon *m_trayIcon; @@ -34,6 +41,8 @@ private: AuthManager *m_authManager; AuthDialog *m_authDialog; + + SettingsDialog *m_settingsDialog; }; #endif //LLINK_MAINWINDOW_H diff --git a/src/mainwindow.ui b/src/mainwindow.ui index e2d14d9..39318d6 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -7,60 +7,134 @@ 0 0 800 - 598 + 676 Flowy.llink - - - true + + + 0 - - - 360 - 20 - 61 - 16 - + + 0 - - - 0 - 0 - + + 0 - - + + 0 - - :/assets/FLOWY-4.png - - - true - - - Qt::AlignmentFlag::AlignCenter - - - - - - 300 - 250 - 181 - 41 - - - - Welcome to Flowy.llink - - - Qt::AlignmentFlag::AlignCenter - - + + + + true + + + + 0 + 0 + + + + + 0 + 28 + + + + + + 770 + 0 + 26 + 22 + + + + ... + + + + + + + + + 740 + 0 + 26 + 22 + + + + ... + + + + + + + + + + + + 0 + 0 + + + + Qt::Orientation::Horizontal + + + + + 0 + 0 + + + + + + + 0 + 0 + + + + + + + 0 + 0 + + + + + 400 + 0 + + + + + + 140 + 300 + 111 + 16 + + + + Main content area + + + + + + @@ -71,8 +145,6 @@ - - - + diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp new file mode 100644 index 0000000..ef4af7d --- /dev/null +++ b/src/settingsdialog.cpp @@ -0,0 +1,24 @@ +#include "settingsdialog.h" +#include "authmanager.h" +#include "ui_settingsdialog.h" + +SettingsDialog::SettingsDialog(AuthManager *authManager, QWidget *parent) + : QDialog(parent), m_authManager(authManager), ui(new Ui::SettingsDialog) +{ + ui->setupUi(this); + + this->setModal(true); + + connect(ui->signOutButton, &QPushButton::clicked, this, &SettingsDialog::on_signOutButton_clicked); +} + +SettingsDialog::~SettingsDialog() +{ + delete ui; +} + +void SettingsDialog::on_signOutButton_clicked() +{ + m_authManager->signOut(); + close(); +} diff --git a/src/settingsdialog.h b/src/settingsdialog.h new file mode 100644 index 0000000..e84f495 --- /dev/null +++ b/src/settingsdialog.h @@ -0,0 +1,29 @@ +#ifndef SETTINGSDIALOG_H +#define SETTINGSDIALOG_H + +#include + +class AuthManager; + +namespace Ui +{ +class SettingsDialog; +} + +class SettingsDialog : public QDialog +{ + Q_OBJECT + +public: + explicit SettingsDialog(AuthManager *, QWidget *parent = nullptr); + ~SettingsDialog(); + +private slots: + void on_signOutButton_clicked(); + +private: + Ui::SettingsDialog *ui; + AuthManager *m_authManager; +}; + +#endif // SETTINGSDIALOG_H diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui new file mode 100644 index 0000000..74dcdf7 --- /dev/null +++ b/src/settingsdialog.ui @@ -0,0 +1,77 @@ + + + SettingsDialog + + + + 0 + 0 + 785 + 700 + + + + Dialog + + + + + 0 + 0 + 221 + 701 + + + + + + + 220 + 0 + 561 + 701 + + + + + + + 220 + 310 + 85 + 64 + + + + + + + Hello, + + + Qt::AlignmentFlag::AlignCenter + + + + + + + Sign Out + + + true + + + false + + + + + + + + + + + +