Hide connection status from settings when there are multiple tray icons
This commit is contained in:
parent
2c1dbff82b
commit
4040a4e136
|
@ -84,6 +84,9 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
||||||
, m_selectedConnection(nullptr)
|
, m_selectedConnection(nullptr)
|
||||||
, m_startStopButtonTarget(StartStopButtonTarget::None)
|
, m_startStopButtonTarget(StartStopButtonTarget::None)
|
||||||
{
|
{
|
||||||
|
if (!s_instances.empty() && s_settingsDlg) {
|
||||||
|
s_settingsDlg->hideConnectionStatus();
|
||||||
|
}
|
||||||
s_instances.push_back(this);
|
s_instances.push_back(this);
|
||||||
|
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
@ -219,7 +222,7 @@ void TrayWidget::showSettingsDialog()
|
||||||
s_dialogParent = make_unique<QWidget>();
|
s_dialogParent = make_unique<QWidget>();
|
||||||
}
|
}
|
||||||
if (!s_settingsDlg) {
|
if (!s_settingsDlg) {
|
||||||
s_settingsDlg = new SettingsDialog(&m_connection, s_dialogParent.get());
|
s_settingsDlg = new SettingsDialog(s_instances.size() < 2 ? &m_connection : nullptr, s_dialogParent.get());
|
||||||
connect(s_settingsDlg, &SettingsDialog::applied, &TrayWidget::applySettingsOnAllInstances);
|
connect(s_settingsDlg, &SettingsDialog::applied, &TrayWidget::applySettingsOnAllInstances);
|
||||||
|
|
||||||
// save settings to disk when applied
|
// save settings to disk when applied
|
||||||
|
|
|
@ -81,6 +81,14 @@ ConnectionOptionPage::~ConnectionOptionPage()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConnectionOptionPage::hideConnectionStatus()
|
||||||
|
{
|
||||||
|
ui()->statusTextLabel->setHidden(true);
|
||||||
|
ui()->statusLabel->setHidden(true);
|
||||||
|
ui()->connectPushButton->setHidden(true);
|
||||||
|
m_connection = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
QWidget *ConnectionOptionPage::setupWidget()
|
QWidget *ConnectionOptionPage::setupWidget()
|
||||||
{
|
{
|
||||||
auto *const widget = ConnectionOptionPageBase::setupWidget();
|
auto *const widget = ConnectionOptionPageBase::setupWidget();
|
||||||
|
@ -92,7 +100,11 @@ QWidget *ConnectionOptionPage::setupWidget()
|
||||||
ui()->pollDevStatsLabel->setToolTip(ui()->pollDevStatsSpinBox->toolTip());
|
ui()->pollDevStatsLabel->setToolTip(ui()->pollDevStatsSpinBox->toolTip());
|
||||||
ui()->pollErrorsLabel->setToolTip(ui()->pollErrorsSpinBox->toolTip());
|
ui()->pollErrorsLabel->setToolTip(ui()->pollErrorsSpinBox->toolTip());
|
||||||
ui()->reconnectLabel->setToolTip(ui()->reconnectSpinBox->toolTip());
|
ui()->reconnectLabel->setToolTip(ui()->reconnectSpinBox->toolTip());
|
||||||
QObject::connect(m_connection, &SyncthingConnection::statusChanged, bind(&ConnectionOptionPage::updateConnectionStatus, this));
|
if (m_connection) {
|
||||||
|
QObject::connect(m_connection, &SyncthingConnection::statusChanged, bind(&ConnectionOptionPage::updateConnectionStatus, this));
|
||||||
|
} else {
|
||||||
|
hideConnectionStatus();
|
||||||
|
}
|
||||||
QObject::connect(ui()->connectPushButton, &QPushButton::clicked, bind(&ConnectionOptionPage::applyAndReconnect, this));
|
QObject::connect(ui()->connectPushButton, &QPushButton::clicked, bind(&ConnectionOptionPage::applyAndReconnect, this));
|
||||||
QObject::connect(ui()->insertFromConfigFilePushButton, &QPushButton::clicked, bind(&ConnectionOptionPage::insertFromConfigFile, this, false));
|
QObject::connect(ui()->insertFromConfigFilePushButton, &QPushButton::clicked, bind(&ConnectionOptionPage::insertFromConfigFile, this, false));
|
||||||
QObject::connect(
|
QObject::connect(
|
||||||
|
@ -160,7 +172,9 @@ void ConnectionOptionPage::insertFromConfigFile(bool forceFileSelection)
|
||||||
|
|
||||||
void ConnectionOptionPage::updateConnectionStatus()
|
void ConnectionOptionPage::updateConnectionStatus()
|
||||||
{
|
{
|
||||||
ui()->statusLabel->setText(m_connection->statusText());
|
if (m_connection) {
|
||||||
|
ui()->statusLabel->setText(m_connection->statusText());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConnectionOptionPage::showConnectionSettings(int index)
|
bool ConnectionOptionPage::showConnectionSettings(int index)
|
||||||
|
@ -352,7 +366,9 @@ void ConnectionOptionPage::reset()
|
||||||
void ConnectionOptionPage::applyAndReconnect()
|
void ConnectionOptionPage::applyAndReconnect()
|
||||||
{
|
{
|
||||||
apply();
|
apply();
|
||||||
m_connection->reconnect((m_currentIndex == 0 ? m_primarySettings : m_secondarySettings[static_cast<size_t>(m_currentIndex - 1)]));
|
if (m_connection) {
|
||||||
|
m_connection->reconnect((m_currentIndex == 0 ? m_primarySettings : m_secondarySettings[static_cast<size_t>(m_currentIndex - 1)]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NotificationsOptionPage
|
// NotificationsOptionPage
|
||||||
|
@ -1333,7 +1349,7 @@ SettingsDialog::SettingsDialog(Data::SyncthingConnection *connection, QWidget *p
|
||||||
|
|
||||||
category = new OptionCategory(this);
|
category = new OptionCategory(this);
|
||||||
category->setDisplayName(tr("Tray"));
|
category->setDisplayName(tr("Tray"));
|
||||||
category->assignPages({ new ConnectionOptionPage(connection), new NotificationsOptionPage, new AppearanceOptionPage,
|
category->assignPages({ m_connectionsOptionPage = new ConnectionOptionPage(connection), new NotificationsOptionPage, new AppearanceOptionPage,
|
||||||
new IconsOptionPage(IconsOptionPage::Context::UI), new IconsOptionPage(IconsOptionPage::Context::System) });
|
new IconsOptionPage(IconsOptionPage::Context::UI), new IconsOptionPage(IconsOptionPage::Context::System) });
|
||||||
category->setIcon(QIcon(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
category->setIcon(QIcon(QStringLiteral(":/icons/hicolor/scalable/app/syncthingtray.svg")));
|
||||||
categories << category;
|
categories << category;
|
||||||
|
@ -1376,6 +1392,12 @@ void SettingsDialog::init()
|
||||||
// some settings could be applied without restarting the application, good idea?
|
// some settings could be applied without restarting the application, good idea?
|
||||||
//connect(this, &Dialogs::SettingsDialog::applied, bind(&Dialogs::QtSettings::apply, &Settings::qtSettings()));
|
//connect(this, &Dialogs::SettingsDialog::applied, bind(&Dialogs::QtSettings::apply, &Settings::qtSettings()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SettingsDialog::hideConnectionStatus()
|
||||||
|
{
|
||||||
|
m_connectionsOptionPage->hideConnectionStatus();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QtGui
|
} // namespace QtGui
|
||||||
|
|
||||||
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, ConnectionOptionPage)
|
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS(QtGui, ConnectionOptionPage)
|
||||||
|
|
|
@ -49,6 +49,7 @@ enum class GuiType {
|
||||||
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(ConnectionOptionPage)
|
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(ConnectionOptionPage)
|
||||||
public:
|
public:
|
||||||
ConnectionOptionPage(Data::SyncthingConnection *connection, QWidget *parentWidget = nullptr);
|
ConnectionOptionPage(Data::SyncthingConnection *connection, QWidget *parentWidget = nullptr);
|
||||||
|
void hideConnectionStatus();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_SETUP_WIDGETS
|
DECLARE_SETUP_WIDGETS
|
||||||
|
@ -158,9 +159,12 @@ public:
|
||||||
explicit SettingsDialog(const QList<QtUtilities::OptionCategory *> &categories, QWidget *parent = nullptr);
|
explicit SettingsDialog(const QList<QtUtilities::OptionCategory *> &categories, QWidget *parent = nullptr);
|
||||||
explicit SettingsDialog(QWidget *parent = nullptr);
|
explicit SettingsDialog(QWidget *parent = nullptr);
|
||||||
~SettingsDialog() override;
|
~SettingsDialog() override;
|
||||||
|
void hideConnectionStatus();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
|
ConnectionOptionPage *m_connectionsOptionPage;
|
||||||
};
|
};
|
||||||
} // namespace QtGui
|
} // namespace QtGui
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue