refactor MainWindow, move start and restart inline with mode options

update labels for the mode buttons actions and menu actions
                     use callstart / callstop for connect and disconect icons
This commit is contained in:
sithlord48
2025-08-19 19:53:39 -04:00
committed by Chris Rizzitello
parent a0d75b28ba
commit 26983dc0e4
3 changed files with 188 additions and 46 deletions

View File

@ -340,9 +340,8 @@ void MainWindow::connectSlots()
connect(ui->btnToggleCore, &QPushButton::clicked, m_actionStartCore, &QAction::trigger, Qt::UniqueConnection);
connect(ui->btnRestartCore, &QPushButton::clicked, this, &MainWindow::resetCore);
connect(ui->btnConnect, &QPushButton::clicked, this, &MainWindow::resetCore);
connect(ui->lineHostname, &QLineEdit::returnPressed, ui->btnConnect, &QPushButton::click);
connect(ui->lineHostname, &QLineEdit::returnPressed, ui->btnRestartCore, &QPushButton::click);
connect(ui->lineHostname, &QLineEdit::textChanged, this, &MainWindow::remoteHostChanged);
connect(ui->btnSaveServerConfig, &QPushButton::clicked, this, &MainWindow::saveServerConfig);
@ -561,7 +560,6 @@ void MainWindow::coreModeToggled()
const auto coreMode = serverMode ? Settings::CoreMode::Server : Settings::CoreMode::Client;
Settings::setValue(Settings::Core::CoreMode, coreMode);
Settings::save();
updateModeControls(serverMode);
}
@ -588,10 +586,47 @@ void MainWindow::updateModeControls(bool serverMode)
m_coreProcess.start();
}
}
updateModeControlLabels();
toggleCanRunCore((!serverMode && !ui->lineHostname->text().isEmpty()) || serverMode);
}
void MainWindow::updateModeControlLabels()
{
const bool isServer = m_coreProcess.mode() == CoreMode::Server;
const bool isStarted = m_coreProcess.isStarted();
QString startText;
QString stopText;
QIcon startIcon;
QIcon stopIcon;
if (isServer) {
startText = tr("Start");
stopText = tr("Stop");
startIcon = QIcon::fromTheme(QStringLiteral("system-run"));
stopIcon = QIcon::fromTheme(QIcon::ThemeIcon::ProcessStop);
} else {
startText = tr("Connect");
stopText = tr("Disconnect");
startIcon = QIcon::fromTheme(QIcon::ThemeIcon::CallStart);
stopIcon = QIcon::fromTheme(QIcon::ThemeIcon::CallStop);
}
m_actionStartCore->setText(startText);
m_actionStartCore->setIcon(startIcon);
m_actionStopCore->setText(stopText);
m_actionStopCore->setIcon(stopIcon);
if (isStarted) {
ui->btnToggleCore->setText(stopText);
ui->btnToggleCore->setIcon(stopIcon);
} else {
ui->btnToggleCore->setText(startText);
ui->btnToggleCore->setIcon(startIcon);
}
}
void MainWindow::updateSecurityIcon(bool visible)
{
m_lblSecurityStatus->setVisible(visible);
@ -1002,9 +1037,6 @@ void MainWindow::coreProcessStateChanged(CoreProcessState state)
disconnect(ui->btnToggleCore, &QPushButton::clicked, m_actionStartCore, &QAction::trigger);
connect(ui->btnToggleCore, &QPushButton::clicked, m_actionStopCore, &QAction::trigger, Qt::UniqueConnection);
ui->btnToggleCore->setText(tr("&Stop"));
ui->btnToggleCore->setIcon(QIcon::fromTheme(QIcon::ThemeIcon::ProcessStop));
ui->btnRestartCore->setEnabled(true);
m_actionStartCore->setVisible(false);
m_actionRestartCore->setVisible(true);
@ -1014,14 +1046,12 @@ void MainWindow::coreProcessStateChanged(CoreProcessState state)
disconnect(ui->btnToggleCore, &QPushButton::clicked, m_actionStopCore, &QAction::trigger);
connect(ui->btnToggleCore, &QPushButton::clicked, m_actionStartCore, &QAction::trigger, Qt::UniqueConnection);
ui->btnToggleCore->setText(tr("&Start"));
ui->btnToggleCore->setIcon(QIcon::fromTheme(QStringLiteral("system-run")));
ui->btnRestartCore->setEnabled(false);
m_actionStartCore->setVisible(true);
m_actionRestartCore->setVisible(false);
m_actionStopCore->setEnabled(false);
}
updateModeControlLabels();
}
void MainWindow::coreConnectionStateChanged(CoreConnectionState state)
@ -1219,7 +1249,6 @@ void MainWindow::daemonIpcClientConnectionFailed()
void MainWindow::toggleCanRunCore(bool enableButtons)
{
ui->btnToggleCore->setEnabled(enableButtons);
ui->btnConnect->setEnabled(enableButtons);
ui->btnRestartCore->setEnabled(enableButtons && m_coreProcess.isStarted());
m_actionStartCore->setEnabled(enableButtons);
m_actionStopCore->setEnabled(enableButtons);

View File

@ -117,7 +117,7 @@ private:
void coreModeToggled();
void updateModeControls(bool serverMode);
void updateModeControlLabels();
std::unique_ptr<Ui::MainWindow> ui;
void updateSize();

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>781</width>
<height>483</height>
<width>758</width>
<height>466</height>
</rect>
</property>
<property name="sizePolicy">
@ -22,7 +22,7 @@
<widget class="QWidget" name="topLevelWidget">
<layout class="QVBoxLayout" name="_2">
<property name="spacing">
<number>10</number>
<number>3</number>
</property>
<item>
<widget class="QWidget" name="widget" native="true">
@ -40,16 +40,16 @@
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="leftMargin">
<number>0</number>
<number>3</number>
</property>
<property name="topMargin">
<number>0</number>
<number>3</number>
</property>
<property name="rightMargin">
<number>0</number>
<number>3</number>
</property>
<property name="bottomMargin">
<number>0</number>
<number>3</number>
</property>
<item>
<widget class="QLabel" name="labelComputerName">
@ -153,7 +153,7 @@
<item>
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -192,15 +192,33 @@
</item>
<item>
<widget class="QWidget" name="widgetModeOptions" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QWidget" name="serverOptions" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>32</height>
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="leftMargin">
<number>0</number>
@ -222,6 +240,18 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>32</height>
</size>
</property>
<property name="text">
<string>&amp;Configure Server</string>
</property>
@ -229,6 +259,24 @@
</item>
<item>
<widget class="QPushButton" name="btnSaveServerConfig">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Export server configuration</string>
</property>
@ -293,7 +341,7 @@
</sizepolicy>
</property>
<property name="text">
<string>Server IP address or hostname:</string>
<string>Server IP or hostname:</string>
</property>
<property name="indent">
<number>0</number>
@ -313,10 +361,98 @@
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="horizontalWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>32</height>
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<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>
<widget class="QPushButton" name="btnConnect">
<widget class="QPushButton" name="btnToggleCore">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>32</height>
</size>
</property>
<property name="text">
<string>Connect</string>
<string>&amp;Start</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnRestartCore">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string>Restart</string>
</property>
<property name="icon">
<iconset theme="view-refresh"/>
</property>
</widget>
</item>
@ -385,29 +521,6 @@
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnRestartCore">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Rest&amp;art</string>
</property>
<property name="icon">
<iconset theme="view-refresh"/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnToggleCore">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Start</string>
</property>
</widget>
</item>
</layout>
</item>
<item>