Skip to content

Commit

Permalink
Start cleaning up the UI code
Browse files Browse the repository at this point in the history
 * Move out the settings account stuff to it's own manager
  • Loading branch information
SneWs committed Jul 11, 2024
1 parent aa754b6 commit 03cdef3
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 28 deletions.
49 changes: 49 additions & 0 deletions AccountsTabUiManager.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
//
// Created by marcus on 2024-07-11.
//

#include "AccountsTabUiManager.h"

#include <QDesktopServices>
#include <QPushButton>
#include <QUrl>

#include "./ui_MainWindow.h"
#include "models.h"

AccountsTabUiManager::AccountsTabUiManager(Ui::MainWindow* u, QObject* parent)
: QObject(parent)
, ui(u)
{

connect(ui->btnAdminConsole, &QPushButton::clicked,
this, [this]() {
QDesktopServices::openUrl(QUrl("https://login.tailscale.com/admin"));
}
);
}

AccountsTabUiManager::~AccountsTabUiManager() {
}

void AccountsTabUiManager::onTailStatusChanged(TailStatus* pTailStatus) {
if (pTailStatus->user->id <= 0)
return; // Not logged in

ui->lstAccounts->clear();
auto* pCurrent = new QListWidgetItem(pTailStatus->user->displayName + "\n" +
pTailStatus->user->loginName);
ui->lstAccounts->addItem(pCurrent);

pCurrent->setSelected(true);
pCurrent->setTextAlignment(Qt::AlignmentFlag::AlignLeft | Qt::AlignmentFlag::AlignVCenter);

ui->lblUsername->setText(pTailStatus->user->displayName);
ui->lblTailnetName->setText(pTailStatus->user->loginName);
ui->lblEmail->setText(pTailStatus->user->loginName);
ui->lblStatus->setText(pTailStatus->backendState);
ui->lblKeyExpiry->setText(pTailStatus->self->keyExpiry.toString(Qt::DateFormat::ISODate));
if (!pTailStatus->user->profilePicUrl.isEmpty()) {
// ui->lblUsername->setPixmap(QPixmap(pTailStatus->user->profilePicUrl));
}
}
33 changes: 33 additions & 0 deletions AccountsTabUiManager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//
// Created by marcus on 2024-07-11.
//

#ifndef ACCOUNTSTABUIMANAGER_H
#define ACCOUNTSTABUIMANAGER_H

#include <QObject>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class TailStatus;

class AccountsTabUiManager : public QObject
{
Q_OBJECT
public:
explicit AccountsTabUiManager(Ui::MainWindow* ui, QObject* parent = nullptr);
virtual ~AccountsTabUiManager();

void onTailStatusChanged(TailStatus* pTailStatus);

private:
Ui::MainWindow* ui;
};



#endif //ACCOUNTSTABUIMANAGER_H
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ set(PROJECT_SOURCES
TrayMenuManager.h
TailSettings.cpp
TailSettings.h
AccountsTabUiManager.cpp
AccountsTabUiManager.h
)

qt_add_executable(tail-tray
Expand Down
37 changes: 9 additions & 28 deletions MainWindow.cpp
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
#include "MainWindow.h"
#include "./ui_MainWindow.h"

#include <QDir>
#include <QFile>
#include <QDesktopServices>

#include "MainWindow.h"
#include "AccountsTabUiManager.h"
#include "./ui_MainWindow.h"

MainWindow::MainWindow(QWidget* parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, accountsTabUi(nullptr)
, pTrayManager(nullptr)
, eCurrentState(TailState::NoAccount)
, pCurrentExecution(nullptr)
, pTailStatus(nullptr)
, pStatusCheckTimer(nullptr)
{
ui->setupUi(this);
accountsTabUi = new AccountsTabUiManager(ui, this);

pStatusCheckTimer = new QTimer(this);
connect(pStatusCheckTimer, &QTimer::timeout, this, [this]() {
Expand Down Expand Up @@ -50,12 +52,6 @@ MainWindow::MainWindow(QWidget* parent)
connect(ui->btnSettingsClose, &QPushButton::clicked,
this, &MainWindow::settingsClosed);

connect(ui->btnAdminConsole, &QPushButton::clicked,
this, [this]() {
QDesktopServices::openUrl(QUrl("https://login.tailscale.com/admin"));
}
);

syncSettingsToUi();
}

Expand Down Expand Up @@ -103,6 +99,7 @@ void MainWindow::onTailStatusChanged(TailStatus* pNewStatus)
delete pTailStatus;

pTailStatus = pNewStatus;

if (pTailStatus->user->id > 0)
{
// Logged in
Expand All @@ -113,25 +110,9 @@ void MainWindow::onTailStatusChanged(TailStatus* pNewStatus)

auto formattedVersion = pTailStatus->version.mid(0, pTailStatus->version.indexOf("-"));
ui->lblVersionNumber->setText("Version " + formattedVersion);

// User account stuff
ui->lstAccounts->clear();
auto* pCurrent = new QListWidgetItem(pTailStatus->user->displayName + "\n" +
pTailStatus->user->loginName);
ui->lstAccounts->addItem(pCurrent);

pCurrent->setSelected(true);
pCurrent->setTextAlignment(Qt::AlignmentFlag::AlignLeft | Qt::AlignmentFlag::AlignVCenter);

ui->lblUsername->setText(pTailStatus->user->displayName);
ui->lblTailnetName->setText(pTailStatus->user->loginName);
ui->lblEmail->setText(pTailStatus->user->loginName);
ui->lblStatus->setText(pTailStatus->backendState);
ui->lblKeyExpiry->setText(pTailStatus->self->keyExpiry.toString(Qt::DateFormat::ISODate));
if (!pTailStatus->user->profilePicUrl.isEmpty()) {
// ui->lblUsername->setPixmap(QPixmap(pTailStatus->user->profilePicUrl));
}
}

accountsTabUi->onTailStatusChanged(pTailStatus);
}

void MainWindow::syncSettingsToUi() {
Expand Down
3 changes: 3 additions & 0 deletions MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ class MainWindow;
}
QT_END_NAMESPACE

class AccountsTabUiManager;

class MainWindow : public QMainWindow
{
Q_OBJECT
Expand All @@ -28,6 +30,7 @@ class MainWindow : public QMainWindow

private:
Ui::MainWindow* ui;
AccountsTabUiManager* accountsTabUi;
TrayMenuManager* pTrayManager;

TailState eCurrentState;
Expand Down

0 comments on commit 03cdef3

Please sign in to comment.