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->btnToggleCore, &QPushButton::clicked, m_actionStartCore, &QAction::trigger, Qt::UniqueConnection);
connect(ui->btnRestartCore, &QPushButton::clicked, this, &MainWindow::resetCore); 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->lineHostname, &QLineEdit::textChanged, this, &MainWindow::remoteHostChanged);
connect(ui->btnSaveServerConfig, &QPushButton::clicked, this, &MainWindow::saveServerConfig); 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; const auto coreMode = serverMode ? Settings::CoreMode::Server : Settings::CoreMode::Client;
Settings::setValue(Settings::Core::CoreMode, coreMode); Settings::setValue(Settings::Core::CoreMode, coreMode);
Settings::save(); Settings::save();
updateModeControls(serverMode); updateModeControls(serverMode);
} }
@ -588,10 +586,47 @@ void MainWindow::updateModeControls(bool serverMode)
m_coreProcess.start(); m_coreProcess.start();
} }
} }
updateModeControlLabels();
toggleCanRunCore((!serverMode && !ui->lineHostname->text().isEmpty()) || serverMode); 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) void MainWindow::updateSecurityIcon(bool visible)
{ {
m_lblSecurityStatus->setVisible(visible); m_lblSecurityStatus->setVisible(visible);
@ -1002,9 +1037,6 @@ void MainWindow::coreProcessStateChanged(CoreProcessState state)
disconnect(ui->btnToggleCore, &QPushButton::clicked, m_actionStartCore, &QAction::trigger); disconnect(ui->btnToggleCore, &QPushButton::clicked, m_actionStartCore, &QAction::trigger);
connect(ui->btnToggleCore, &QPushButton::clicked, m_actionStopCore, &QAction::trigger, Qt::UniqueConnection); 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); ui->btnRestartCore->setEnabled(true);
m_actionStartCore->setVisible(false); m_actionStartCore->setVisible(false);
m_actionRestartCore->setVisible(true); m_actionRestartCore->setVisible(true);
@ -1014,14 +1046,12 @@ void MainWindow::coreProcessStateChanged(CoreProcessState state)
disconnect(ui->btnToggleCore, &QPushButton::clicked, m_actionStopCore, &QAction::trigger); disconnect(ui->btnToggleCore, &QPushButton::clicked, m_actionStopCore, &QAction::trigger);
connect(ui->btnToggleCore, &QPushButton::clicked, m_actionStartCore, &QAction::trigger, Qt::UniqueConnection); 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); ui->btnRestartCore->setEnabled(false);
m_actionStartCore->setVisible(true); m_actionStartCore->setVisible(true);
m_actionRestartCore->setVisible(false); m_actionRestartCore->setVisible(false);
m_actionStopCore->setEnabled(false); m_actionStopCore->setEnabled(false);
} }
updateModeControlLabels();
} }
void MainWindow::coreConnectionStateChanged(CoreConnectionState state) void MainWindow::coreConnectionStateChanged(CoreConnectionState state)
@ -1219,7 +1249,6 @@ void MainWindow::daemonIpcClientConnectionFailed()
void MainWindow::toggleCanRunCore(bool enableButtons) void MainWindow::toggleCanRunCore(bool enableButtons)
{ {
ui->btnToggleCore->setEnabled(enableButtons); ui->btnToggleCore->setEnabled(enableButtons);
ui->btnConnect->setEnabled(enableButtons);
ui->btnRestartCore->setEnabled(enableButtons && m_coreProcess.isStarted()); ui->btnRestartCore->setEnabled(enableButtons && m_coreProcess.isStarted());
m_actionStartCore->setEnabled(enableButtons); m_actionStartCore->setEnabled(enableButtons);
m_actionStopCore->setEnabled(enableButtons); m_actionStopCore->setEnabled(enableButtons);

View file

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

View file

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