Show the connection config name in tooltip when displaying multiple icons
This commit is contained in:
parent
0d8c5e524a
commit
a6727b0fa7
|
@ -251,7 +251,9 @@ void TrayIcon::showSyncthingNotification(CppUtilities::DateTime when, const QStr
|
||||||
|
|
||||||
void TrayIcon::updateStatusIconAndText()
|
void TrayIcon::updateStatusIconAndText()
|
||||||
{
|
{
|
||||||
const StatusInfo statusInfo(trayMenu().widget().connection());
|
auto &trayWidget = trayMenu().widget();
|
||||||
|
const auto statusInfo = StatusInfo(trayMenu().widget().connection(),
|
||||||
|
TrayWidget::instances().size() > 1 && trayWidget.selectedConnection() ? trayWidget.selectedConnection()->label : QString());
|
||||||
if (statusInfo.additionalStatusText().isEmpty()) {
|
if (statusInfo.additionalStatusText().isEmpty()) {
|
||||||
setToolTip(statusInfo.statusText());
|
setToolTip(statusInfo.statusText());
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -84,11 +84,19 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
||||||
, m_selectedConnection(nullptr)
|
, m_selectedConnection(nullptr)
|
||||||
, m_startStopButtonTarget(StartStopButtonTarget::None)
|
, m_startStopButtonTarget(StartStopButtonTarget::None)
|
||||||
{
|
{
|
||||||
|
// don't show connection status within connection settings if there are multiple tray widgets/icons (would be ambiguous)
|
||||||
if (!s_instances.empty() && s_settingsDlg) {
|
if (!s_instances.empty() && s_settingsDlg) {
|
||||||
s_settingsDlg->hideConnectionStatus();
|
s_settingsDlg->hideConnectionStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// take record of the newly created instance
|
||||||
s_instances.push_back(this);
|
s_instances.push_back(this);
|
||||||
|
|
||||||
|
// show the connection configuration in the previous icon's tooltip as soon as there's a 2nd icon
|
||||||
|
if (s_instances.size() == 2) {
|
||||||
|
s_instances.front()->updateIconAndTooltip();
|
||||||
|
}
|
||||||
|
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
// setup models and views
|
// setup models and views
|
||||||
|
@ -214,6 +222,8 @@ TrayWidget::~TrayWidget()
|
||||||
if (s_instances.empty()) {
|
if (s_instances.empty()) {
|
||||||
delete s_dialogParent;
|
delete s_dialogParent;
|
||||||
QCoreApplication::quit();
|
QCoreApplication::quit();
|
||||||
|
} else if (s_instances.size() == 1) {
|
||||||
|
s_instances.front()->updateIconAndTooltip();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,6 +659,16 @@ void TrayWidget::updateOverallStatistics()
|
||||||
m_ui->localStatisticsLabel->setText(directoryStatusString(overallStats.local));
|
m_ui->localStatisticsLabel->setText(directoryStatusString(overallStats.local));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TrayWidget::updateIconAndTooltip()
|
||||||
|
{
|
||||||
|
if (!m_menu) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (auto *const trayIcon = m_menu->icon()) {
|
||||||
|
trayIcon->updateStatusIconAndText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TrayWidget::toggleRunning()
|
void TrayWidget::toggleRunning()
|
||||||
{
|
{
|
||||||
switch (m_startStopButtonTarget) {
|
switch (m_startStopButtonTarget) {
|
||||||
|
|
|
@ -55,6 +55,7 @@ public:
|
||||||
const Data::SyncthingNotifier ¬ifier() const;
|
const Data::SyncthingNotifier ¬ifier() const;
|
||||||
QMenu *connectionsMenu();
|
QMenu *connectionsMenu();
|
||||||
static const std::vector<TrayWidget *> &instances();
|
static const std::vector<TrayWidget *> &instances();
|
||||||
|
Data::SyncthingConnectionSettings *selectedConnection();
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void showSettingsDialog();
|
void showSettingsDialog();
|
||||||
|
@ -88,6 +89,7 @@ private Q_SLOTS:
|
||||||
void changeStatus();
|
void changeStatus();
|
||||||
void updateTraffic();
|
void updateTraffic();
|
||||||
void updateOverallStatistics();
|
void updateOverallStatistics();
|
||||||
|
void updateIconAndTooltip();
|
||||||
void toggleRunning();
|
void toggleRunning();
|
||||||
Settings::Launcher::LauncherStatus handleLauncherStatusChanged();
|
Settings::Launcher::LauncherStatus handleLauncherStatusChanged();
|
||||||
Settings::Launcher::LauncherStatus applyLauncherSettings(
|
Settings::Launcher::LauncherStatus applyLauncherSettings(
|
||||||
|
@ -161,6 +163,12 @@ inline const std::vector<TrayWidget *> &TrayWidget::instances()
|
||||||
{
|
{
|
||||||
return s_instances;
|
return s_instances;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline Data::SyncthingConnectionSettings *TrayWidget::selectedConnection()
|
||||||
|
{
|
||||||
|
return m_selectedConnection;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QtGui
|
} // namespace QtGui
|
||||||
|
|
||||||
#endif // TRAY_WIDGET_H
|
#endif // TRAY_WIDGET_H
|
||||||
|
|
|
@ -32,7 +32,7 @@ void StatusInfo::recomputeAdditionalStatusText()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatusInfo::updateConnectionStatus(const SyncthingConnection &connection)
|
void StatusInfo::updateConnectionStatus(const SyncthingConnection &connection, const QString &configurationName)
|
||||||
{
|
{
|
||||||
m_additionalStatusInfo.clear();
|
m_additionalStatusInfo.clear();
|
||||||
|
|
||||||
|
@ -92,6 +92,10 @@ void StatusInfo::updateConnectionStatus(const SyncthingConnection &connection)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!configurationName.isEmpty()) {
|
||||||
|
m_statusText = configurationName % QChar(':') % QChar(' ') % m_statusText;
|
||||||
|
}
|
||||||
|
|
||||||
recomputeAdditionalStatusText();
|
recomputeAdditionalStatusText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,12 @@ namespace QtGui {
|
||||||
class SYNCTHINGWIDGETS_EXPORT StatusInfo {
|
class SYNCTHINGWIDGETS_EXPORT StatusInfo {
|
||||||
public:
|
public:
|
||||||
explicit StatusInfo();
|
explicit StatusInfo();
|
||||||
explicit StatusInfo(const Data::SyncthingConnection &connection);
|
explicit StatusInfo(const Data::SyncthingConnection &connection, const QString &configurationName = QString());
|
||||||
|
|
||||||
const QString &statusText() const;
|
const QString &statusText() const;
|
||||||
const QString &additionalStatusText() const;
|
const QString &additionalStatusText() const;
|
||||||
const QIcon &statusIcon() const;
|
const QIcon &statusIcon() const;
|
||||||
void updateConnectionStatus(const Data::SyncthingConnection &connection);
|
void updateConnectionStatus(const Data::SyncthingConnection &connection, const QString &configurationName = QString());
|
||||||
void updateConnectedDevices(const Data::SyncthingConnection &connection);
|
void updateConnectedDevices(const Data::SyncthingConnection &connection);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -34,9 +34,9 @@ private:
|
||||||
const QIcon *m_statusIcon;
|
const QIcon *m_statusIcon;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline StatusInfo::StatusInfo(const Data::SyncthingConnection &connection)
|
inline StatusInfo::StatusInfo(const Data::SyncthingConnection &connection, const QString &configurationName)
|
||||||
{
|
{
|
||||||
updateConnectionStatus(connection);
|
updateConnectionStatus(connection, configurationName);
|
||||||
updateConnectedDevices(connection);
|
updateConnectedDevices(connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue